Effective C++ 条款34 区分接口继承和实现继承
2015-09-09 21:47
369 查看
1. C++对于函数成员的继承主要有三种:
只继承接口,不继承实现;
同时继承接口和实现,同时允许覆写实现;
继承接口和实现,同时不允许对实现进行覆写.
2. 对于public继承,成员函数的接口应该总是被继承(由于is-a关系的存在),其中:
pure-virtual函数的目的只是为了使派生类继承函数接口;
impure-virtual(虚但非纯虚)函数的目的是既允许派生类继承接口和实现,又可以重写实现.
non-virtual函数的目的是令派生类继承函数的接口以及一份强制实现.(如果想要重写,那么之前就应该设为virtual函数)
public继承中,基类成员函数的种类应该遵循以上原则定义.
3. virtual函数既允许继承实现又允许重写实现的目的有时候会带来危险性,例如:
View Code
只继承接口,不继承实现;
同时继承接口和实现,同时允许覆写实现;
继承接口和实现,同时不允许对实现进行覆写.
2. 对于public继承,成员函数的接口应该总是被继承(由于is-a关系的存在),其中:
pure-virtual函数的目的只是为了使派生类继承函数接口;
impure-virtual(虚但非纯虚)函数的目的是既允许派生类继承接口和实现,又可以重写实现.
non-virtual函数的目的是令派生类继承函数的接口以及一份强制实现.(如果想要重写,那么之前就应该设为virtual函数)
public继承中,基类成员函数的种类应该遵循以上原则定义.
3. virtual函数既允许继承实现又允许重写实现的目的有时候会带来危险性,例如:
class Derived:public Base{ public: virtual void fun(){ Base::fun(); } ... private: ... }
View Code
相关文章推荐
- c++ stl 之迭代器浅析
- c++ 字符串输出限制突破
- C++用法的学习心得
- 欢迎使用CSDN-markdown编辑器
- C++用法的学习心得
- C++中重载、重写(覆盖)和隐藏的区别实例分析
- Effective C++——条款31(第5章)
- C++封装mysql的基本API
- Effective C++ 条款33 避免遮掩继承而来的名称
- C++ 数组
- 字节对齐C++
- 文件操作
- C语言去掉字符串前后空格,中间多余空格
- effective c++若不想使用编译器自动生成的函数,就应该明确拒绝
- C++内存管理
- 国家模式c++
- 编程基础——C/C++,Java,ObjC讨论回调模式
- 我的C++学习心得
- c++机试整理
- C++ string string string string string string string string string string