当前位置:  开发笔记 > 编程语言 > 正文

在构造函数中初始化,最佳实践?

如何解决《在构造函数中初始化,最佳实践?》经验,为你挑选了3个好方法。

我用C++编程了一段时间,我使用了两种方法:

class Stuff {
public:
     Stuff( int nr ) : n( nr ) { }
private:
     int n;
}

要么

class Stuff {
public:
     Stuff( int nr ) { 
         n = nr;
     }
private:
     int n;
}

注意:这与此不同,相似但不相同.

什么是最佳做法?



1> dirkgently..:

初始化列表是首选.见FAQ 10.6


在该链接上禁止访问.我想这就是为什么不鼓励仅链接答案的原因.

2> Dan Breslau..:

使用初始化程序的一大优点是:如果在初始化程序列表中的任何位置抛出异常,则将为已经初始化的成员调用析构函数 - 并且仅针对这些成员.

当您使用构造函数体初始化对象时,您可以正确处理异常并根据需要展开对象.这通常要难以做到.



3> James Suther..:

尽可能使用初始化列表.对于int来说,无论哪种方式都没关系,但是对于更复杂的成员对象,你最终会得到被调用对象的默认构造函数,然后是对该对象的赋值,这很可能会结束慢一点

另外,对于没有默认构造函数的const成员或成员,无论如何都必须这样做.


参考成员也需要使用init列表.
推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有