【C++】类的成员初始化表与构造函数内赋值操作
我们常常在初始化类数据成员的时候,对使用初始化表和在构造函数中十分困惑,这二者有什么区别呢?我们应该如何选择呢?
先举个简单的例子,看下面的两段代码:
代码A:
inline Account::Account():_name(){_balance = 0.0;_acc_nmbr = 0;}除了两个例外,两个在结果和性能上都是等价的。更受欢迎的是用成员初始化表。
两个例外是任何类型的const和引用数据成员。因为他们必须在成员初始化表中被初始化,否则会产生编译时刻错误。
每个成员只能在成员初始化表中出现一次,初始化顺序是由成员在类中被声明的顺序决定的,而不是由名字在初始化表中的顺序决定的。但是在初始化表中出现的成员总是在构造函数体内成员的赋值之前被初始化。