Effective C++ 条款09 绝不在构造和析构函数中调用虚函数
来源:互联网 发布:斯维尔是什么软件 编辑:程序博客网 时间:2024/05/16 15:01
请记住:
在构造和析构期间不要调用虚函数,因为这类调用从不下降至derived class。
代码如下:
#include<iostream>using namespace std;class Base{public:Base(){logbase();}virtual void logbase(){cout<<"This is Base's logbase"<<endl;}virtual ~Base(){}private:};class Derived:public Base{public:virtual void logbase(){cout<<"This is Derived's logbase"<<endl;}virtual ~Derived(){}};int main(){Derived d;system("pause");return 0;}
#include<iostream>using namespace std;class Base{public:Base(){init();}virtual void logbase(){cout<<"This is Base's logbase"<<endl;}virtual ~Base(){}private:void init(){logbase();}};class Derived:public Base{public:/*Derived(){logbase();}*/virtual void logbase(){cout<<"This is Derived's logbase"<<endl;}virtual ~Derived(){}};int main(){Derived d;system("pause");return 0;}
结果均为:
可是若当该虚函数会调用成员函数时
#include<iostream>using namespace std;class Base{public:Base():ma(1),mb(2){logbase(ma,mb);}virtual void logbase(int x,int y){cout<<"This is Base's logbase"<<endl;cout<<"x+y= "<<x+y<<endl;}virtual ~Base(){}private:int ma;int mb;};class Derived:public Base{public:virtual void logbase(int x,int y){cout<<"This is Derived's logbase"<<endl;cout<<"x*y= "<<x*y<<endl;}virtual ~Derived(){}private:int da;int db;};int main(){Derived d;system("pause");return 0;}
在build时会显示:
Linking...
LINK : fatal error LNK1168: cannot open Debug/vita.exe for writing
执行 link.exe 时出错.
0 0
- Effective C++:条款09:绝不在构造和析构过程中调用virtual函数
- 读书笔记《Effective C++》条款09:绝不在构造和析构过程中调用virtual函数
- Effective C++ 条款09 绝不在构造和析构函数中调用虚函数
- 【Effective c++】条款09:绝不再构造和析构过程中调用virtual函数
- Effective C++ 读书笔记 条款09:绝不在构造和析构过程中调用virtual函数
- effective c++条款9(绝不在构造和析构过程中调用virtual函数)
- Effective C++ 条款9:绝不在构造和析构过程中调用virtual函数
- Effective C++——》条款9:绝不在构造和析构过程中调用virtual函数
- 《Effect C++》学习------条款09:绝不在构造和析构过程中调用virtual函数
- Effective c++学习笔记——条款09:绝不在构造和析构过程中调用virtual函数
- Effective c++学习笔记——条款09:绝不在构造和析构过程中调用virtual函数
- <Effective C++> Item 9:绝不在构造和析构过程中调用虚函数
- 【Effective_c++】条款09:绝不在构造和析构函数中调用virtual函数
- Effective C++ Item 09-绝不在构造函数和析构函数中调用virtual函数
- Effective C++笔记09:绝不在构造函数和析构过程中调用virtual 函数
- 条款09:绝不在构造和析构过程中调用virtual函数
- 条款09:绝不在构造和析构过程中调用virtual函数
- 条款09:绝不在构造和析构过程中调用virtual函数
- Clang AST parsing for automated code generation
- FreeRTOS 复习
- python当中关于字符串的处理
- 如何将cmd中的输入写成文本保存下来
- JAVA计算文件的MD5及SHA1等值
- Effective C++ 条款09 绝不在构造和析构函数中调用虚函数
- 手机网站禁止缩放页面的代码
- 使用CSerialPort类编写串口通信程序的问题
- Linux 添加C++ Man
- PHP生成迅雷、快车、旋风等软件的下载链接代码实例
- C#创建Windows服务
- 线上应用故障排查之一:高CPU占用
- cocos2dx3.0 Ref
- 关于HTLM的两种框架表现形式