C++构造与析构(7) - 数据成员的初始化
2015-05-24 10:34
295 查看
C++中, 类成员的初始化顺序与它们的声明顺序一致。
参考下面例子:
输出:x = 10 y = 1990696510
上述程序可以打印正常的x值,但是y值是不确定的,因为y值会在x之前进行初始化。
所以下面的程序可以避免这种情况:
参考下面例子:
#include<iostream> class Test { private: int y; int x; public: Test(): x(10), y(x + 10) { } void print(); }; void Test::print() { std::cout << "x = " << x << " y = " << y; } int main() { Test t; t.print(); return 0; } |
上述程序可以打印正常的x值,但是y值是不确定的,因为y值会在x之前进行初始化。
所以下面的程序可以避免这种情况:
// 解决方法1:调整声明的顺序 class Test { private: int x; int y; public: Test() : x(10), y(x + 10) {} void print(); }; // 解决方法2:调整初始化顺序 class Test { private: int y; int x; public: Test() : x(y-10), y(20) {} void print(); };
相关文章推荐
- C++常量和引用数据成员的初始化
- C++中用成员初始化值初始化类的const数据成员
- C++ 初始化类的三个数据成员
- C++ 常量数据成员、静态数据成员、常量静态数据成员的初始化
- C++ 初始化类的三个数据成员
- C++ 怎么在默认构造函数的初始化列表中初始化指针或者引用类型数据成员
- c++ 用参数初始化列表对数据成员初始化
- C++ 初始化类的三个数据成员
- C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员
- 关于c++的class(偏c++11以前,构造、静态成员、const、初始化列表、友元、内联、template)
- C++ 12.4.5 类成员的显示初始化----数据成员都是public类型且没有构造函数的类
- C++必须使用【初始化列表】初始化数据成员的三种情况
- c++对象成员变量的构造和析构顺序
- C++的类 (新增 static成员数据初始化,纯虚函数,抽象类)
- C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员
- 用大括号初始化C++数据成员
- c++中初始化数据成员的方法
- 关于C++ 类数据成员初始化的一点总结【为什么类定义中不能初始化成员变量】
- c++中静态数据成员与常量的初始化
- C++回顾之类数据成员的初始化