假设我有一个Foo类。我可以想象两种初始化方式:(即,调用构造函数)
Foo myFooLong = Foo(...args...);
Foo myFooShort(...args...);
操作有什么不同(据我所知,情况并非如此)?
答案 0 :(得分:0)
声明
Foo myFooLong = Foo(...args...);
首先创建一个Foo
对象(右侧),然后使用copy construtor
将其复制到左操作数。
第二个语句只是创建一个新的Foo
对象。
没有理由比第二种方法更喜欢第一种方法。第一个涉及不必要的临时创建和复制,因此需要一个可访问的复制构造函数(copy elision可能会被应用)。