我是一名主要从事 Python 切换到 C++ 的程序员。我掌握了指针和内存分配的窍门,但我已经阅读了一些关于复制构造函数的解释,但我不明白它们是什么。
你能解释一下,什么是复制构造函数,我什么时候需要使用它?
我是一名主要从事 Python 切换到 C++ 的程序员。我掌握了指针和内存分配的窍门,但我已经阅读了一些关于复制构造函数的解释,但我不明白它们是什么。
你能解释一下,什么是复制构造函数,我什么时候需要使用它?
http://www.cplusplus.com/articles/y8hv0pDG/
什么是复制构造函数?
复制构造函数是用于复制现有实例的类/结构的特殊构造函数。根据 C++ 标准,MyClass 的复制构造函数必须具有以下签名之一:
MyClass( const MyClass& other ); MyClass( MyClass& other ); MyClass( volatile const MyClass& other ); MyClass( volatile MyClass& other );
什么时候需要编写复制构造函数?
首先,您应该了解,如果您不声明复制构造函数,编译器会隐式地为您提供一个。隐式复制构造函数对源对象进行逐个成员的复制。
[...]
在许多情况下,这已经足够了。但是,在某些情况下,会员副本版本不够好。到目前为止,默认复制构造函数不够用的最常见原因是对象包含原始指针,您需要获取指针的“深度”副本。也就是说,您不想复制指针本身;相反,您想复制指针指向的内容。