Effective C++读书笔记一 条款36 绝对不要重新定义public继承来的non-virtual函数
来源:互联网 发布:ubuntu 安装lnmp php7 编辑:程序博客网 时间:2024/06/05 22:41
Effective C++36 never refine inherited non-virtual function
1.实验如果违反该条规则会如何
#include <iostream>using namespace std;class B{ public: void mf(){ cout<<"base"<<endl; }};class D: public B{ public: void mf(){ cout<<"derived"<<endl; }};int main(){ D x; B* pb = &x; pb->mf(); D* pd = &x; pd->mf();}
分析由于调用的函数是非虚函数,使用指针调用时会发生静态绑定,因此调用指针的静态类型所指的对应函数
2 理论分析
public继承中,非虚函数的继承其实代表了不变性应该凌驾于特异性之上,所以去改变non-virtual函数在子类中的定义本来就与想要表达的语意矛盾.
因此 不要在子类中重新定义public 继承而来的 non-virtual function.
阅读全文
0 0
- Effective C++读书笔记一 条款36 绝对不要重新定义public继承来的non-virtual函数
- 读书笔记《Effective C++》条款36:绝不重新定义继承而来的non-virtual函数
- 绝对不要重新定义继承而来的non-virtual函数(Effective C++_36)
- 条款36:绝对不要重新定义继承而来的non-virtual函数
- 条款36:绝对不要重新定义继承而来的non-virtual函数
- Effective C++ 读书笔记 条款36:绝不重新定义继承而来的 non-virtual 函数
- Effective C++:条款36:绝不重新定义继承而来的non-virtual函数
- Effective C++条款36解读: 绝不重新定义继承而来的non-virtual函数
- Effective C++ 条款36:绝不重新定义继承而来的non-virtual函数
- 《Effective C++》读书笔记之item36:绝不重新定义继承而来的non-virtual函数
- 《Effective C++》36:绝不重新定义继承而来的non-virtual函数
- C++之绝不重新定义继承而来的non-virtual函数(36)---《Effective C++》
- c++:不要重新定义继承而来的non-virtual函数
- 条款36:决不重新定义继承而来的non-virtual函数
- 条款36:绝不重新定义继承而来的non-virtual函数
- 条款36-37绝不重新定义继承而来的non-virtual函数与缺省参数
- 条款36:绝不重新定义继承而来的non-virtual函数
- Effective C++ Item 36 绝不重新定义继承而来的 non-virtual 函数
- 一个小白的程序猿养成日记01
- Leetcode:121. Best Time to Buy and Sell Stock
- 随手记在iPhone X上的真机适配实践总结
- GIT push到github记录用户名
- 如何彻底理解反射
- Effective C++读书笔记一 条款36 绝对不要重新定义public继承来的non-virtual函数
- python实践项目(五)
- 标题布局和自定义view进度条 及自定义ViewGroup
- Linux学习笔记-EXT2文件系统
- apache tomcat部署web应用的三种实现方式
- LeetCode.463 Island Perimeter
- Linux重要命令的使用
- 使用python实现深度神经网络
- MySQL日志记录(2)SQL执行记录