gpt4 book ai didi

c++ - 复制构造函数、析构函数和赋值运算符。我们什么时候不需要它们?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:44 24 4
gpt4 key购买 nike

我知道在你的类中添加 cctor、dtor 或 op= 时的 C++ 经验法则,你还需要添加另外两个以使你的类在所有情况下都能正常工作。

是否存在不需要提供全部三个而只需提供其中一两个的情况?

如果您将其中一个添加到您的类中,为什么 C++ 不要求您将它们全部添加?

编辑1:

当您不仅不需要其中一些,而且不想拥有它们时,您提到了示例,因此您希望将它们设为私有(private)或 protected 。但是即使是空体,您仍然需要在代码中编写它们。

当你通过添加一个空主体的虚拟析构函数来使类多态时,我没有全部拥有它们的唯一正当理由。但是一旦你在析构函数的主体中写了一些东西,你就应该考虑在 cctor 和 op= 的主体中也写一些东西。

我正在寻找不需要编写所有 3 种方法的示例,即使是新手正在使用您的类(class),您也可以省略其中的一些方法而不会在您的类(class)中引起错误。 :)

最佳答案

在开发多态类时,您可能希望使用不带复制构造函数或赋值运算符的析构函数,在这种情况下,您希望虚拟析构函数允许通过基类进行释放指针。这些类通常会支持复制构造函数,以促进“虚拟克隆”习惯用法。然而,它们很少有赋值运算符,因为多态类通常是堆分配的并且仅通过指针引用,在这种情况下直接赋值几乎总是导致切片。

关于c++ - 复制构造函数、析构函数和赋值运算符。我们什么时候不需要它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5497959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com