至少有两种方法可以在 C++ 中初始化一个类。
(1) 初始化列表
struct C
{
int i;
C() : i(0) {}
};
(2) 初始化方法
struct D
{
int i;
C() { init(); }
void init() {
i = 0;
}
};
我需要不时重新初始化我班级的对象。使用第二种解决方案,我可以简单地调用obj.init()
. 对于第一个解决方案,我要么必须添加一个init()
基本上复制初始化列表效果的函数,要么使用obj = C()
.
对于这里的哪种变体更好,是否存在或多或少的共识?使用初始化方法是否有缺点(除了C++ FAQ 中提到的可能的性能损失)。