我对如何初始化内置类型(如int或double)感到困惑。我在谈论复制初始化和直接初始化:
int a = 0; // copy initialization
int b(0); // direct initialization
最佳做法是什么?所有C ++版本都可以直接初始化吗?
答案 0 :(得分:2)
“最佳实践”可能不是可以明确说明的东西 - 有些人更喜欢一个,有些人更喜欢,而现代编译器应该为两者做同样的事情,除非你的空对象的构造函数做了编译器无法消除的东西。对于编译器本身知道的基本类型,生成的代码应该是相同的[可能有些编译器会产生细微差别,因为代码采用不同的路径或类似的路径,因此代码生成的顺序略有不同,导致不同的集合优化或不同的寄存器分配等,但如果存在任何可测量的差异,我通常会感到失望]
我不知道C ++版本不支持简单类型。显然,对于类和其他复杂对象,它在某种程度上取决于构造函数和可用的构造函数。