item34: 区分接口继承和实现继承
来源:互联网 发布:只知魏晋 编辑:程序博客网 时间:2024/05/22 06:19
很明显基类的成员函数有三种类型,决定了它们在继承类中扮演什么角色。
我们这里只针对public继承,因此讨论的范围也只限于public/protected成员函数。
首先是纯虚函数,它表示对继承类提供接口。
其实是非纯的虚函数,它表示在提供接口的基础上还提供了一份默认的实现。这里可能会有一些陷阱。倘若你有这样的一个需求,你既要提供一个默认的实现,又想强烈的提醒继承类,你最好overide这个虚函数,你可以在基类的虚函数里这么做:
class Base{public: virtual void mf1() {mf2();}protected: void mf2() { do_sth(); }};
让人有点意外的是,你还可以给纯虚函数提供一个实现,这不会破坏这个抽象类的属性,你仍然无法直接定义一个基类对象,但是你的继承类对象却真的可以调用那个基类的纯虚函数!
class Base{public: virtual void mf1() =0 {mf2();}};classs Derived : Base {};Derived d; // okBase b; // errord.mf1(); // ok!!!
最后是非虚函数,它表示这些函数继承类可以原封不动的拿来使用。
0 0
- item34: 区分接口继承和实现继承
- 《Effective C++》读书笔记之item34:区分接口继承与实现继承
- 区分接口继承和实现继承
- 区分接口继承和实现继承
- 条款34:区分接口继承和实现继承
- 条款34:区分接口继承和实现继承
- 条款34:区分接口继承和实现继承
- effective c++ 条款36: 区分接口继承和实现继承
- [effective c++]条款34-区分接口继承和实现继承
- 条款34:区分接口继承和实现继承
- 条款34:区分接口继承和实现继承
- Effective C++ 条款34 区分接口继承和实现继承
- 条款34:区分接口继承和实现继承
- Effective C++:条款34:区分接口继承和实现继承
- 条款34:区分接口继承和实现继承
- Effective C++ 34 区分接口继承和实现继承
- 条款 36: 区分接口继承和实现继承
- 《Effective C++》:条款34:区分接口继承和实现继承
- 容易搞错的fgets()
- dos windows linux 下用脚本/批处理ping一个网段内的所有机器
- 第三十八讲 LINQ to SQL-续 (手动的写Linq to Sql代码)
- 图的最短路径学习笔记
- 想想
- item34: 区分接口继承和实现继承
- JAVA面向对象知识点总结(5)— 继承
- HDU 1688 Sightseeing 最短路 及次短路 路径长度和路径数
- 修改ulimit值
- Linked List Cycle
- 业务用例(Rose) - Windows XP经典软件系列
- 大S产女获张兰连续两天探望 大赞儿媳妇是骄傲
- 04-27 看面经做题
- 随机游走的PageRank算法 sensitive PageRank