标签:构造 成员 没有 使用 code isp int 问题 inpu
在对象使用之前将它初始化,对于无任何成员的内置类型,你必须手工完成此事。
例如:
int x = 0;
const char *text = " ";
double d;
std::cin >> d; //以input stream 的方式完成初始化
内置类型以外的任何其他东西,初始化责任落在构造函数身上。确保每一个构造函数都将对象的每一个成员初始化。
1 1 class CTest {
2 2 public:
3 3 int a;
4 4 float b;
5 5
6 6 //构造函数初始化列表
7 7 CTest(): a(0),b(2.3) {
8 8 }
9 9
10 10 //构造函数内部赋值
11 11 CTest() {
12 12 a=0;
13 13 b=2.3;
14 14 }
15 15 };
初始化和赋值对内置类型的成员没有什么大的区别,像上面的任一个构造函数都可以。对非内置类型成员变量,为了避免两次构造,推荐使用类构造函数初始化列表。
C++初始化类成员时,是按照声明的顺序初始化的,而不是按照出现在初始化列表中的顺序。
为避免需要记住成员变量何时必须在成员初值列表中初始化,何时不需要,最简单的做法就是:总是使用成员初值列。这样做有时候绝对必要,且又往往比赋值更有效。
为免除“跨编译单元之初始化次序”问题,请以local static 对象替换non - local static 对象。( ?)
——整理自《Effective C++》
标签:构造 成员 没有 使用 code isp int 问题 inpu
原文地址:http://www.cnblogs.com/thunder-wu/p/6670567.html