切忌在类的初始化列表中调用类的成员函数
来源:互联网 发布:巨人名录数据库网站 编辑:程序博客网 时间:2024/05/01 14:27
class Base{public: // 在这里虚表还没有生成,虚指针还没有初始化 Base(int value): m_k(func(value)) { } virtual int func(int value) { return value * 2; } int GetK() const { return m_k; } protected: int m_k; };class Drive: public Base{ public: Drive(int value): Base(value), m_i(func(value)), m_j(value) { } int func(int value) { return value * 3; } int GetI() const { return m_i; } int GetJ() const { return m_j; } private: int m_i; int m_j; };上面的例子中在构造函数的初始化列表中调用成员方法,但是this指针还没有初始化完成,虚表以及虚指针还没有进行初始化引起就会存在问题,可能达不到想要的结果,这里的func函数调用都是本类的函数
0 0
- 切忌在类的初始化列表中调用类的成员函数
- 在构造函数的参数化列表中调用基类构造函数初始化继承来的成员变量
- 在构造函数的参数化列表中调用基类构造函数初始化继承来的成员变量
- 派生类不能在成员初始化列表中直接初始化基类的成员
- 派生类不能在成员初始化列表中直接初始化基类的成员
- 为什么 没有缺省构造函数的类类型成员 必需要在初始化列表 里初始化 ?
- 必须在构造函数的成员初始化列表里初始化
- C++中类的构造函数与析构函数(成员初始化列表)
- c++中什么类型的成员变量只能在构造函数的初始化列表中进行
- c++中类的构造函数的初始化成员列表详解!
- 写程序说明C++中成员函数的初始化顺序只跟在类中的声明顺序有关, 而跟初始化列表中的顺序无关
- 在子类中初始化父类成员并显式调用父类这个初始化的成员
- [转]在类的成员函数中调用delete this
- 在类的成员函数中调用delete this
- 在类的成员函数中能不能调用delete this
- 在类的成员函数中调用delete this
- 在类的成员函数中调用delete this
- 在类的成员函数中调用delete this
- LeetCode Missing Number 数组
- Codeforces Round #331 (Div. 2) B. Wilbur and Array
- shell&&linux 常用命令
- 爬虫入门讲解:基础理论篇
- animateWithDuration
- 切忌在类的初始化列表中调用类的成员函数
- String、StringBuffer与StringBuilder之间区别
- 选择器实现排序方法
- mysql密码修改
- rwerwqerwqerwer
- 第一篇:如何生成每秒百万级别的 HTTP 请求?
- CenTos OpenVpn 一键安装包
- C++基础::非类型模板参数在STL中的应用
- 常用的URL Scheme客户端配置