您能否尽可能简单地用英语解释复制构造函数是什么以及何时需要使用它

时间:2013-05-16 22:04:45

标签: c++ copy-constructor

我是一名程序员,主要从事Python切换到C ++。我正在掌握指针和内存分配,但我已经阅读了几个关于复制构造函数的解释,我不明白它们是什么。

你能解释一下,复制构造函数是什么以及什么时候需要使用它?

1 个答案:

答案 0 :(得分:3)

http://www.cplusplus.com/articles/y8hv0pDG/

  

什么是复制构造函数?

     

复制构造函数是类/结构的特殊构造函数,用于创建现有实例的副本。根据C ++标准,MyClass的复制构造函数必须具有以下签名之一:

MyClass( const MyClass& other );
MyClass( MyClass& other );
MyClass( volatile const MyClass& other );
MyClass( volatile MyClass& other );
     

我什么时候需要编写复制构造函数?

     

首先,你应该明白,如果你没有声明一个复制构造函数,编译器就会隐式地给你一个。隐式复制构造函数执行源对象的成员方复制。

     

[...]

     

在许多情况下,这就足够了。但是,在某些情况下,成员级副本版本不够好。到目前为止,默认复制构造函数不足的最常见原因是因为对象包含原始指针,您需要获取指针的“深层”副本。也就是说,你不想复制指针本身;而你想要复制指针指向的内容。