尽量使用初始化而不是在构造函数里赋值
class Test
{
public:
int a;
float b;
Test():a(0),b(0.0) { }
Test() { a=0; b=0.0; }
};
初始化与赋值构造函数对内置类型区别不大,而对于非内置类型,如string,为了避免两次构造函数的调用,推荐使用初始化。以下是必须使用初始化的情况:
- 对于const和引用类型,只能初始化,不能赋值。
- 如果我们的类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;
}