代码改变世界

Effective C++ 学习笔记(9)

2011-08-03 14:12  Daniel Zheng  阅读(230)  评论(0编辑  收藏  举报

尽量使用初始化而不是在构造函数里赋值


class Test
{
public:
int a;
float b;
Test():a(
0),b(0.0) { }
Test() { a
=0; b=0.0; }
};

  初始化与赋值构造函数对内置类型区别不大,而对于非内置类型,如string,为了避免两次构造函数的调用,推荐使用初始化。以下是必须使用初始化的情况:

  1. 对于const和引用类型,只能初始化,不能赋值。
  2. 如果我们的类A有一个类B的成员,而类B没有默认构造函数,而只有带参数的构造函数,这个时候要对类B进行初始化,只能调用初始化表。
class A
{
public:
A(
int a)
{
cout
<<"A constructor"<<endl;
}
};

class B
{
public:
B():a(
1)
{
cout
<<"B constructor"<<endl;
}
private:
A a;
};

int main()
{
B b;
return 0;
}