C++ 创建对象,初始化列表与分配

C++ Creating objects, initialization lists vs assignment?

本文关键字:分配 列表 初始化 创建对象 C++      更新时间:2023-10-16

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

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

我找到了这个页面:

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

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

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