我已经在 C++ 中工作了一段时间,但我不确定这两个选项之间的区别:
public : Thing(int _foo, int _bar): member1(_foo), member2(_bar){}
和
public : Thing(int _foo, int _bar){
member1 = _foo;
member2 = _bar;
}
我有一种感觉,他们做同样的事情,但这两种语法之间是否存在实际差异。其中一个是否比另一个更安全,它们是否以不同的方式处理默认参数。
不完全习惯第一个例子,所以如果我在上面犯了错误,我很抱歉。
原文由 gardian06 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果
member1
和member2
是非 POD(即非 Plain O ld Data )类型,则它们是不同的:相当于
因为它们会在构造函数体开始执行之前被初始化,所以基本上完成了两次工作。这也意味着,如果这些成员的类型没有默认构造函数,那么您的代码将 无法 编译。