C++ 抽象类二(抽象类的基本语法)
Posted 庖丁解牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 抽象类二(抽象类的基本语法)相关的知识,希望对你有一定的参考价值。
//抽象类的基本语法 #include<iostream> using namespace std; /* 有关多继承的说明 被实际开发经验抛弃的多继承 工程开发中真正意义上的多继承是几乎不被使用的 多重继承带来的代码复杂性远多于其带来的便利 多重继承对代码维护性上的影响是灾难性的 在设计方法上,任何多继承都可以用单继承代替 绝大多数面向对象语言都不支持多继承 绝大多数面向对象语言都支持接口的概念 C++中没有接口的概念 C++中可以使用纯虚函数实现接口 接口类中只有函数原型定义,没有任何数据的定义。 总结:C++中的模拟接口类定义3大条件 1.只有public访问权限(因为必须要求子类重写父类纯虚函数) 2.只能定义函数原型,不提供实现 3.不能定义任何成员属性 C++中的模拟接口类特点 1.不可以定义接口类对象 2.可以定义接口类的指针和引用 3.接口类中必须是纯虚函数,不能是虚函数 纯虚函数与虚函数的区别 纯虚函数:virtual void Print() = 0; 虚函数:virtual void Print(){cout<<"我是普通的虚函数"<<endl;} 纯虚函数没有函数实现,虚函数有函数实现 实际工程经验证明 多重继承接口不会带来二义性和复杂性等问题 多重继承可以通过精心设计用单继承和接口来代替 接口类只是一个功能说明,而不是功能实现。 子类需要根据功能说明定义功能实现。 */ class Point{ public: virtual void Print() = 0; }; class PointA:public Point{ virtual void Print(){ cout << "我是子类 我重写了父类的纯虚函数" << endl; } }; void ProtectB(){ //Point p1; 报错 error C2259 : “Point” : 不能实例化抽象类 Point *p1 = NULL; PointA pa; p1 = &pa; //产生多态 p1->Print(); } void main(){ ProtectB(); system("pause"); }
以上是关于C++ 抽象类二(抽象类的基本语法)的主要内容,如果未能解决你的问题,请参考以下文章