C++中的抽象类(接口和协议)
来源:互联网 发布:mac系统word 编辑:程序博客网 时间:2024/06/05 22:39
有关多继承的说明
被实际开发经验抛弃的多继承
工程开发中真正意义上的多继承是几乎不被使用的
多重继承带来的代码复杂性远多于其带来的便利
多重继承对代码维护性上的影响是灾难性的
在设计方法上,任何多继承都可以用单继承代替
多继承的麻烦:多继承中的二义性
C++中是否有Java中的接口概念?
绝大多数面向对象语言都不支持多继承
绝大多数面向对象语言都支持接口的概念
C++中没有接口的概念
C++中可以使用纯虚函数实现接口
接口类中只有函数原型定义,没有任何数据的定义。
class Interface{public:virtual void func1() = 0;virtual void func2(int i) = 0;virtual void func3(int i) = 0; };
实际工程经验证明
多重继承接口不会带来二义性和复杂性等问题
多重继承可以通过精心设计用单继承和接口来代替
接口类只是一个功能说明,而不是功能实现。
子类需要根据功能说明定义功能实现。
#include "iostream"using namespace std;/*C++中没有接口的概念C++中可以使用纯虚函数实现接口接口类中只有函数原型定义,没有任何数据的定义。*/class Interface1{public:virtual void print() = 0;virtual int add(int i, int j) = 0;};class Interface2{public:virtual int add(int i, int j) = 0;virtual int minus(int i, int j) = 0;};class parent{public:int i;};class Child : public parent, public Interface1, public Interface2{ public: void print(){cout<<"Child::print"<<endl;}int add(int i, int j){return i + j;}int minus(int i, int j){return i - j;}};int main(){Child c;c.print();cout<<c.add(3, 5)<<endl;cout<<c.minus(4, 6)<<endl; Interface1* i1 = &c;Interface2* i2 = &c;cout<<i1->add(7, 8)<<endl;cout<<i2->add(7, 8)<<endl;system("pause"); return 0;}
0 0
- C++中的抽象类(接口和协议)
- 【C#】抽象类和接口
- 【C#】C#中的继承 (继承、抽象类和抽象方法、接口)
- 【C++】接口(抽象类)
- Java中的抽象类和接口的区别(总结)
- Java中的接口和抽象类(转)
- java中的接口、抽象类和类
- java 中的抽象类和接口!
- c#中的抽象类和接口
- C#中的抽象类和接口
- java中的接口和抽象类区别
- 理解JAVA中的接口和抽象类
- C#中的抽象类和接口
- Delphi中的接口和抽象类
- php中的抽象类和接口
- C++ 中的 抽象类 和 接口
- Delphi中的接口和抽象类
- JAVA中的接口和抽象类(转)
- 使用R语言绘制中国地图
- IOS中TableView更新数据的步骤
- centos 设置vim显示行号,设置tab为4个空格
- Visual C++ 6.0的三个问题---尚未完成安装 MSDEV.EXE 应用程序错误 缺少动态链接库文件
- 统计对象大小函数性能比较
- C++中的抽象类(接口和协议)
- XShell配置Socket5代理
- 输入汉字,得到汉字的大写首字母
- UVa 455 最小重复字符串
- wpa_cli P2P 连接相关调试命令
- 斯坦福大学公开课 :机器学习课程(Andrew Ng)——10、无监督学习:Mixture of Gaussians and the EM Algorithm
- 去掉或自定义ExpandableListView的箭头图标
- linux服务器怎么修改时区和时间
- Java_语法基础_保留指定位数小数