gpt4 book ai didi

c++ - 应该在无指针类中声明/实现析构函数吗?

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

应该在无指针类中声明/实现析构函数吗?有/没有它有什么好处吗?

我的男人是:

class Point
{
public:
int X, Y;
Point(int x, int y);
//~Point(void); //should I uncoment it and implement empty destructor ?
}

最佳答案

Should destructior be declared/implemented in pointerless class?

不需要[条件适用]。编译器会为你生成一个。
只有当你想执行一些特定的事情时,你才应该提供一个,而编译器不会。
例如:

  • 资源管理(内存管理,文件处理),
  • 记录,
  • 关闭网络连接,
  • 简而言之,每次销毁对象时需要执行的自定义功能

一般来说,经验法则是:
“如果您需要提供复制构造函数或复制赋值运算符,那么您很可能还需要提供自己的析构函数。”
通常,此规则称为 Rule of Three .


[条件适用] 如果您的类旨在充当继承的基类,并且您的实现将需要在指向派生类的基类指针上调用 delete class 对象,那么你需要提供一个析构函数并在 Base class 中将其标记为 virtual,否则将导致 Undefined Behavior


Is there any advantage of having/not having it?

无,因为编译器会做同样的事情,所以不需要做额外的输入。

关于c++ - 应该在无指针类中声明/实现析构函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14217723/

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