我是一名程序员,主要从事Python切换到C ++。我正在掌握指针和内存分配,但我已经阅读了几个关于复制构造函数的解释,我不明白它们是什么。
你能解释一下,复制构造函数是什么以及什么时候需要使用它?
答案 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 );
我什么时候需要编写复制构造函数?
首先,你应该明白,如果你没有声明一个复制构造函数,编译器就会隐式地给你一个。隐式复制构造函数执行源对象的成员方复制。
[...]
在许多情况下,这就足够了。但是,在某些情况下,成员级副本版本不够好。到目前为止,默认复制构造函数不足的最常见原因是因为对象包含原始指针,您需要获取指针的“深层”副本。也就是说,你不想复制指针本身;而你想要复制指针指向的内容。