C++的实现继承和接口继承的小白描述
来源:互联网 发布:软件开发人员收入 编辑:程序博客网 时间:2024/04/28 21:23
网上找了很久关于C++的接口继承和实现继承的文章,但大多数都是《Effictive C++》的条款34原话,我想把它理解成自己的话然后写出来。
如有错误之处,请指正,谢谢啦,嘻嘻!
函数就是所说的接口,函数体就是所说的实现。
首先是接口继承,在C++中的表现是纯虚函数,因为在父类中,纯虚函数只有函数原型,没有函数体,这就正表示了父类只为他提供了一个接口,而必须在要实例化的子类中实现该接口。
代码依旧用《Effictive C++》上的好了。
class Shape{public: virtual void draw() const=0; virtual void error(const std::string &msg); int objectID() const; ...};class Rectangle:public Shape{...};class Ellipse:public Shape{...};
对于上面的接口draw(),如果派生类需要实例化该类的一个对象,那派生类就必须提供一个draw()的实现,否则,编译器就会报错。基类说:派生类,你想出现在内存世界里的话你必须把我给你的接口draw()实现了,什么,你不想?那你就活在代码中好了。设计者的思想是希望派生类只继承接口(也就是声明,也就是函数名)。
而接口error表示,基类说:派生类,你必须提供一个error函数。什么,你又不想?那可以,用我的。
就是说派生类这时就要么自己实现,要么用基类的版本。设计者的思想就是你希望派生类同时继承函数的接口和实现,但又希望能重新覆写(override)它们所继承的实现。
接口object(),基类说:派生类,你必须继承我的函数和实现。并且这些你都不能动。你要动,那你继承我干嘛?哪还有什么“is-a”关系,散了吧,回家各找各妈。设计者的思想就是:派生类不可以覆写任何东西,必须使用基类的版本。
理论完毕。
阅读全文
0 0
- C++的实现继承和接口继承的小白描述
- 接口继承和实现继承的区别
- 接口继承和实现继承的区别
- C++:接口继承和实现继承
- Java类的继承、接口的继承和实现
- 类的继承和接口的实现
- C++箴言<34>:接口继承和实现继承的区别
- C++接口继承与实现继承的区别和选择
- java的继承和接口实现
- Java -- 继承和实现接口的关系
- 类的继承和接口实现
- 类和接口的继承与实现
- 接口的多继承和实现
- 接口继承和实现继承
- 接口继承和实现继承
- 接口继承和实现继承
- 继承:继承接口和实现
- C#继承接口的类和派生接口的实现
- TCP/IP入门笔记
- Python实现快速排序
- 浅谈Log4j和Log4j2的区别
- Java&C++的基本语法对比
- Unity Ads 接入
- C++的实现继承和接口继承的小白描述
- 小白每天学习两个函数D6-( fread,fwrite)
- 机房收费系统之上下机
- JavaScript某行代码执行的时候,用到了某个变量,但是这个变量根本找不到在哪里定义了(或者说看上去根本没有定义过)是怎么回事,是怎么执行的?
- 算法训练 P1101
- Build Dana on CentOS7
- HTML的一些笔记
- 安卓-图片适配问题,问UI设计师要什么样的图,然后图片放在哪个文件夹
- 伪随机数生成——梅森旋转(Mersenne Twister/MT)算法笔记