C++ 复制省略

2024年8月28日 | 1分钟阅读

复制省略(Copy elision)被定义为一种优化技术,用于避免不必要的对象复制。通常,所有编译器都使用复制省略技术。该优化技术不适用于绑定到引用的临时对象。

它也称为复制省略。

让我们通过一个例子来理解复制省略的必要性。

代码

输出

Default Constructor called

观察结果

该程序输出 Default constructor。这是因为当我们创建对象 a1 时,一个参数构造函数被转换为将我复制到一个临时对象,然后该临时对象被复制到对象 a1。

这就是语句 -

A a1 = "copy me"

被转换为

A a1("copy me")

如何避免不必要的开销?

许多编译器都避免了这种开销问题。

现代编译器将复制初始化语句分解为

A a1 = "copy me"

成为

直接初始化语句。

A a1("copy me")

这反过来又调用复制构造函数。