我最近和一位朋友讨论过他们说在使用C ++创建对象时使用初始化列表(而不是简单地分配数据成员)会有性能提升。
为什么会这样(如果是的话)?
我找到了这个页面:
http://www.parashift.com/c++-faq/init-lists.html
他们提到了临时对象,但我认为最近的编译器可以避免这种情况吗?
答案 0 :(得分:5)
使用赋值时,在进行赋值之前,对象是默认构造的。如果构造和复制一个对象是昂贵的操作,你至少应该摆脱其中一个。初始化列表摆脱了额外的复制操作。复制构造允许同时进行两者。