c++ 类的构造函数
2016-04-16 00:07
330 查看
C++构造函数初始化按下列顺序被调用:
首先,任何虚拟基类的构造函数按照它们被继承的顺序构造;
其次,任何非虚拟基类的构造函数按照它们被继承的顺序构造;
最后,任何成员对象的构造函数按照它们声明的顺序调用;
运行结果如下:
Initial A, i: 1
Initial B, i: 1
根据以上结果可知: 对成员变量的初始化,是严格按照声明次序,而不是在初始化列表中的顺序进行初始化
首先,任何虚拟基类的构造函数按照它们被继承的顺序构造;
其次,任何非虚拟基类的构造函数按照它们被继承的顺序构造;
最后,任何成员对象的构造函数按照它们声明的顺序调用;
class InitialA { public: InitialA(int i) { printf("Initial A, i: %d\n", i); } }; class InitialB { public: InitialB(int i) { printf("Initial B, i: %d\n", i); } }; class Initial { public: Initial(): initialB(1), initialA(1) {} ~Initial() {} private: InitialA initialA; InitialB initialB; }; int main(int argc, char* argv) { Initial initial; return 0; }
运行结果如下:
Initial A, i: 1
Initial B, i: 1
根据以上结果可知: 对成员变量的初始化,是严格按照声明次序,而不是在初始化列表中的顺序进行初始化
相关文章推荐
- 巩固C语言(五)----获取CMD输出的字符串 & 字符串的拷贝、查找、长度 & 实例之调戏QQ
- 【Leetcode】2.Add Two Numbers 解题
- 【Leetcode】1.Two Sum 解题
- 探究printf
- C# 与 C++ 交互
- (LeetCode 326)Power of Three
- (C语言基础版)贪吃蛇-支持滚键盘
- C++给函数传数组参数
- C++ <string><string.h>函数区别
- C++第二次作业补充
- C/C++语言中NULL、'\0’和0的区别
- C++/C代码规范(个人)(不断更新)
- C++第二次实验补充
- C++ 命名空间 namespace 知多少
- C++ 中关于默认构造函数的一点困惑
- VS 创建 使用C++ 静态类库(Dll)
- effective c++读书笔记(一)
- C++实践参考:数组作数据成员
- c++ cin和cout对象
- C++中的小错误