C ++'函数样式'类初始化

时间:2014-05-05 16:44:22

标签: c++ oop coding-style

假设我有一个Foo类。我可以想象两种初始化方式:(即,调用构造函数)

Foo myFooLong = Foo(...args...);
Foo myFooShort(...args...);

操作有什么不同(据我所知,情况并非如此)?

1 个答案:

答案 0 :(得分:0)

声明

  Foo myFooLong = Foo(...args...);

首先创建一个Foo对象(右侧),然后使用copy construtor将其复制到左操作数。

第二个语句只是创建一个新的Foo对象。

没有理由比第二种方法更喜欢第一种方法。第一个涉及不必要的临时创建和复制,因此需要一个可访问的复制构造函数(copy elision可能会被应用)。