C ++创建对象,初始化列表与赋值?

时间:2012-12-15 17:20:57

标签: c++ performance

我最近和一位朋友讨论过他们说在使用C ++创建对象时使用初始化列表(而不是简单地分配数据成员)会有性能提升。

为什么会这样(如果是的话)?

我找到了这个页面:

http://www.parashift.com/c++-faq/init-lists.html

他们提到了临时对象,但我认为最近的编译器可以避免这种情况吗?

1 个答案:

答案 0 :(得分:5)

使用赋值时,在进行赋值之前,对象是默认构造的。如果构造和复制一个对象是昂贵的操作,你至少应该摆脱其中一个。初始化列表摆脱了额外的复制操作。复制构造允许同时进行两者。