Code Bye

c++ 派生类可以完全继承基类的任何的内容包括全部接口

百度c++类的继承和组合的区别,有人说继承可以重用接口
具体是什么意思,父类实现的接口被子类用吗?那组合也可以啊。
感觉应该是理解错了,能不能举个例子?
解决方案

20

面向对象编程讲究的是代码复用,继承和组合都是代码复用的有效方法。组合是将其他类的对象作为成员使用,继承是子类可以使用父类的成员方法。引用一个生动的比方:继承是说“本人父亲在家里给本人帮了很大的忙”,组合是说“本人请了个老头在本人家里干活”。

5

C++没有接口一说,接口是java
C++模访接口
#if _MSC_VER > 1300
#define _declareInterface(X) class __declspec(novtable) X{ public: virtual ~X()=0{}
#define _endDeclare };
#endif
或,参考wtl 编译多态 接口, 需要很深的模板元编程功底

25

普通继承情况下,继承比起组合只是,子类可以隐式转换成父类引用,原因是继承有效的根本就是能够使用父类的地方都能够使用子类,和operator T不同的是这种转换在何时都能生效,这就是为什么子类能调用父类的成员函数
虚继承的情况下,组合要实现继承的效果相当复杂,你可以查看虚继承的内存布局
虚函数的情况下,组合只需要在本人的构造函数中更新父类的虚函数表就能实现多态
假如只是存在一级继承,使用组合也无妨,但多重继承会让问题变得很复杂

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c++ 派生类可以完全继承基类的任何的内容包括全部接口