【发布时间】:2026-01-10 08:00:01
【问题描述】:
为什么我们需要复制构造函数?
我正在学习 C++,但我无法理解对复制构造函数的需求,因为也没有使用复制构造函数,我得到了正确的输出。 我经历了几个例子,但在我看来,拥有复制构造函数只是一个好习惯,比如初始化变量。有人可以帮我理解复制构造函数的概念。 任何帮助将不胜感激。 谢谢。
【问题讨论】:
-
因为简单的值副本(就像 C 所做的那样)对于非值的东西是不够的,例如指针或其他句柄。写下你的向量作为练习。
-
这能回答你的问题吗? What is The Rule of Three?
-
您不一定需要复制构造函数。仅当您要复制构造对象时;)。有些类没有
-
你可以使用
Foo(Foo const&) = delete;来省去Foo的拷贝构造函数。 -
我认为你错过了一个事实,即如果你不提供复制构造函数,编译器会为你生成一个。这适用于 C++ 中的每个
class/struct。编译器生成的复制构造函数对于大多数类来说已经足够了,但是如果你在一个类中管理一些资源(比如使用new分配一些东西),你需要提供你自己的复制构造函数。
标签: c++ copy-constructor