Item 9 避免在ctor和dtor中调用虚函数
来源:互联网 发布:linux打开sqlplus 编辑:程序博客网 时间:2024/05/16 05:18
看下面的程序有什么问题。
在基类的构造过程中,虚函数调用不会被传递到派生类中。因为基类的ctor是在派生类之前执行的,这时其数据成员还没有被初始化,即,派生对象还不存在!所以C++拒绝这样做。
不止虚函数,使用到RTTI的部分(dynamic_cast和typeid),在基类的ctor里,都不会被解析成派生类。
ctor和dtor同样。
一些编译器会对此给出警告。
● 注意,还有一种隐藏版本:
● 如果非要在基类里实现这样的功能,怎么办?下面是一种办法。
- Item 9 避免在ctor和dtor中调用虚函数
- Item 8 异常安全的ctor和dtor
- C++基本功和 Design Pattern系列 ctor & dtor
- C++基本功和 Design Pattern系列(3) ctor & dtor
- C++基本功和 Design Pattern系列 ctor & dtor (转)
- 如何拒绝编译器为自己声明创建函数(default ctor, copy ctor, dtor, copy assignment)
- <Effective C++> Item 9:绝不在构造和析构过程中调用虚函数
- Item 9:绝不在构造和析构过程中调用虚函数【effective C++读书笔记】
- Item 12 注意copy ctor和赋值函数
- Effective C++ Item 9 绝不在构造和析构过程中调用virtual函数
- Effective C++ Item 9 绝不在构造和析构过程中调用virtual函数
- Effective C++ Item 09-绝不在构造函数和析构函数中调用virtual函数
- 读书笔记 effective c++ Item 9 绝不要在构造函数或者析构函数中调用虚函数
- 读书笔记 effective c++ Item 9 绝不要在构造函数或者析构函数中调用虚函数
- 读书笔记 effective c++ Item 9 绝不要在构造函数或者析构函数中调用虚函数
- 读书笔记 effective c++ Item 9 绝不要在构造函数或者析构函数中调用虚函数
- 把ctor和非成员函数虚化
- 编写高质量代码——避免在构造析构函数中调用虚函数
- 4.15--4.20(去掉16.17)共4天日记
- 一步一个脚印学习WCF之一WCF出现的目的
- 获得android模拟器root权限的命令
- 帮你充分认识 Oracle 数据库表与视图
- StrutsPrepareAndExecuteFilter
- Item 9 避免在ctor和dtor中调用虚函数
- 一步一个脚印学习WCF之二构建一个简单的WCF应用程序前必须掌握的WCF基础术语---地址(Addresses)
- JNI入门
- 如何写一份好的工程师简历
- 不抱怨--六六
- FREEBSD添加用户/删除用户/修改用户密码
- Oracle 中怎么删除重复数据
- (转)poll, select & epoll 原理比较分析
- 不同编译环境JNI使用