我用C++编程了一段时间,我使用了两种方法:
class Stuff {
public:
Stuff( int nr ) : n( nr ) { }
private:
int n;
}
Run Code Online (Sandbox Code Playgroud)
要么
class Stuff {
public:
Stuff( int nr ) {
n = nr;
}
private:
int n;
}
Run Code Online (Sandbox Code Playgroud)
注意:这与此不同,相似但不相同.
什么是最佳做法?
Dan*_*lau 12
使用初始化程序的一大优点是:如果在初始化程序列表中的任何位置抛出异常,则将为已经初始化的成员调用析构函数 - 并且仅针对这些成员.
当您使用构造函数体初始化对象时,您可以正确处理异常并根据需要展开对象.这通常要难以做到.
尽可能使用初始化列表.对于int来说,无论哪种方式都没关系,但是对于更复杂的成员对象,你最终会得到被调用对象的默认构造函数,然后是对该对象的赋值,这很可能会结束慢一点
另外,对于没有默认构造函数的const成员或成员,无论如何都必须这样做.