Effective C++笔记09:绝不在构造函数和析构过程中调用virtual 函数
来源:互联网 发布:java 常用算法函数 编辑:程序博客网 时间:2024/05/17 17:18
当创建BuyTransaction对象时,会首先调用基类的构造函数,而Transaction构造函数内部调用纯虚函数logTransaction。
这里会出现两个问题:
第一,logTransaction是虚函数,但是此处的调用是调用基类内部的函数,因为此时derived class对象尚未形成,derived class对象构造期间类型属于基类。
第二,基类中的纯虚函数没有定义则会出现连接错误。
对于析构函数也是如此,当derived class析构函数开始执行,对象内的derived class成员变量变呈现未定义值,此时derive class对象被当做base class对象对待。
那么如何做到Tranction继承体系上的对象被创建,有适当版本的logTransaction被调用呢?一种方案如下:
即改变logTransaction为非虚函数,要求derived class将必要的信息传递给Transaction构造函数
0 0
- Effective C++笔记09:绝不在构造函数和析构过程中调用virtual 函数
- Effective C++:条款09:绝不在构造和析构过程中调用virtual函数
- 读书笔记《Effective C++》条款09:绝不在构造和析构过程中调用virtual函数
- 【Effective c++】条款09:绝不再构造和析构过程中调用virtual函数
- Effective C++ 读书笔记 条款09:绝不在构造和析构过程中调用virtual函数
- effective C++ 09_绝不在构造和析构过程中调用virtual函数 读书笔记
- Effective c++学习笔记——条款09:绝不在构造和析构过程中调用virtual函数
- Effective c++学习笔记——条款09:绝不在构造和析构过程中调用virtual函数
- Effective C++ 笔记之六 绝不在构造和析构函数中调用virtual函数
- Effective C++ Item 09-绝不在构造函数和析构函数中调用virtual函数
- Effective C++ Item 9 绝不在构造和析构过程中调用virtual函数
- Effective C++ Item 9 绝不在构造和析构过程中调用virtual函数
- effective c++绝不在构造和析构过程中调用virtual函数
- effective c++条款9(绝不在构造和析构过程中调用virtual函数)
- Effective C++ 条款9:绝不在构造和析构过程中调用virtual函数
- Effective C++——》条款9:绝不在构造和析构过程中调用virtual函数
- 《Effect C++》学习------条款09:绝不在构造和析构过程中调用virtual函数
- Effective C++学记之09 绝不在构造和析构过程中调用virtual函数
- 类的加载顺序及静态代码块的执行时机
- CJOJ 1160 热浪
- 显示HWC合成(hwc_display_contents_1_t,hwc_layer_1_t数据结构关系)
- 24点游戏
- 如何存储和获取数据
- Effective C++笔记09:绝不在构造函数和析构过程中调用virtual 函数
- 链表面试题——C语言
- Java中关于包的小结
- 架设wordpress
- CEF编译步骤
- HDU1102&&POJ2421 Constructing Roads
- Java接口
- 使用Eclipse打开已有的工程
- 关于jsp中,调用根路径时发生的问题