【发布时间】:2018-10-22 20:32:18
【问题描述】:
在 C++ 中有多种初始化对象的方法。下面有两个例子,ent1 和 ent2。我想知道有什么区别,其中一个更“正确”还是比另一个更受欢迎?
class Entity {
public:
int h;
Entity(int health) : h(health) { }
}
Entity ent1(10);
Entity ent2 = Entity(10);
【问题讨论】:
-
在这种情况下,它们是相同的,首选第一个。
-
为什么首选第一个?
-
因为没有无意义的重复。
-
有意义。你说'在这种情况下它们是相同的'。在什么情况下它们会不一样?因为如果它们是相同的,那么有两种制作对象的方法很奇怪
-
一个不同之处在于,第二种形式需要 C++17 之前的复制构造函数。见stackoverflow.com/questions/1051379/…。
标签: c++ object initialization