C++ 复制省略

C++ 复制省略

复制省略被定义为一种用于避免不必要的对象复制的优化技术。一般来说,所有编译器都会使用复制省略技术。该优化技术对于绑定到引用的临时对象不可用。

它也被称为复制省略。

让我们通过一个示例来理解复制省略的需求。

代码:

#include 
using namespace std;
class A
{
public: 
    A(const char* str = "\0") //default constructor
    {
        cout << " Default Constructor called" << endl;
    }   

    A(const A &a) //copy constructor
    {
        cout << "Copy constructor called" << endl;
    }
};

int main()
{
    A a1 = "copy me"; // Create object of class A
    return 0;
}

输出

Default Constructor called

观察

程序输出的是默认构造函数。 这是因为当我们创建对象a1时,将一个参数构造函数转换为复制me到一个临时对象,并将该临时对象复制给对象a1。

这就是语句的方式 –

A a1 = “copy me”

转换为

A a1(“copy me”)

如何避免不必要的开销

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

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

A a1 = “copy me”

转换为,

直接初始化语句。

A a1(“copy me”)

进而调用复制构造函数。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程