首页 > 代码库 > (1)确定对象被使用前已经被初始化
(1)确定对象被使用前已经被初始化
在对象使用之前将它初始化,对于无任何成员的内置类型,你必须手工完成此事。
例如:
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++》
(1)确定对象被使用前已经被初始化
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。