C++纯虚函数、抽象类、纯抽象类
#include<iostream> class Shape { //抽象类 //包含纯虚函数的类叫抽象类 //不能使用抽象类创建对象 //如果类中所有的成员函数都是纯虚函数,那么该类就是纯抽象类--也叫接口类--纯属给子类做接口的类 public: Shape(int x = 0, int y = 0) :m_x(x), m_y(y) { } virtual void draw(void) = 0; //纯虚函数 //自定义了接口,没有实现体的虚函数叫纯虚函数 protected: int m_x; int m_y; }; class Rect :public Shape { public: Rect(int x, int y, int w, int h) :Shape(x, y), m_w(w), m_h(h) {} void draw(void) { std::cout << "绘制矩形:" << m_x << ", " << m_y << ", " << m_w << ", " << m_h << std::endl; } private: int m_w; int m_h; }; class Circle :public Shape { public: Circle(int x, int y, int r) :Shape(x, y), m_r(r) {} void draw(void) { std::cout << "绘制圆形:" << m_x << ", " << m_y << ", " << m_r << std::endl; } private: int m_r; }; void render(Shape* buf[]) { for (int i = 0; buf[i] != NULL; ++i) { buf[i]->draw(); } } int main() { Shape* buf[1024] = { NULL }; buf[0] = new Rect(100, 100, 200, 300); buf[1] = new Circle(100, 100, 50); buf[2] = new Rect(10, 80, 300, 30); buf[3] = new Circle(10, 150, 500); render(buf); return 0; }
工厂模式
#include<iostream> class PDF { public: void parse(const char* pdffile) { //利用this指针实现多态的函数 std::cout << "解析出一行文本" << std::endl; onText(); std::cout << "解析出一副图片" << std::endl; onImage(); std::cout << "解析出一个矩形" << std::endl; onRect(); } private: virtual void onText(void) = 0; virtual void onImage(void) = 0; virtual void onRect(void) = 0; }; class PDFRen :public PDF { private: void onText(void) { std::cout << "显示一行文本" << std::endl; } void onImage(void) { std::cout << "绘制一副图片" << std::endl; } void onRect(void) { std::cout << "绘制一个矩形" << std::endl; } }; int main() { PDFRen r; r.parse("xx.pdf"); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2019-09-02 C++--- Lambda匿名函数表达式
2019-09-02 qt5--数据类型转换