如何为类创建析构函数
How to create a destructor for a class
我发现,对于许多类,析构函数都是空的。然而,并非所有人都是这样。当我们需要在析构函数中写入一些东西时,有规则吗?如果类中的所有变量都是静态的,那么我们总是只需要一个空的析构函数吗?
当您需要在项被销毁时执行某些操作时,您需要一个析构函数。对于析构函数,您可能不需要做任何标准的事情。
你可以选择使用析构函数的东西:
- 终止一些正在运行的线程
- 向用户提供有意义的消息
- 打印文件中的重要内容,删除项目后文件将丢失
- 使用
delete
取消分配内存(已使用new
运算符分配的内存) - 关闭互联网连接插座
虽然destructor
是为每个项目执行任务的自动方式,但您可以选择"手动"执行这些任务,既可以在程序主体中执行(不推荐),也可以使用特定的方法执行。
如果您没有定义任何构造函数,那么c++将为您创建一个空的默认构造函数。
因此,答案是您可以自由决定是否定义一个空构造函数。在这种情况下没有任何区别。
如果类的所有变量都是静态的。。。这在很大程度上取决于情况,但通常根据经验,静态类不使用析构函数,因为它们不像"正常"类那样实例化。
有时,您确实需要使类中的所有变量都是静态的。这种情况甚至有一种模式。但这更多的是一种例外,而不是一种规则。
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 在从仅移动类型派生的类中定义析构函数在使用 std::vector emplace_back或push_back创建时会
- 创建析构函数是好的编程实践吗?
- 受保护的析构函数禁用在堆栈上创建派生类的对象?
- 创建/向容器添加对象时如何使用构造函数/析构函数
- 通过显式调用对象的析构函数和构造函数来重新创建对象
- bad_alloc::'标量删除析构函数'(无符号整数)当我尝试创建矢量 470MB 大小时
- 类析构函数在创建shared_ptr时调用两次
- 如何在具有指向对象的指针数组的类中创建复制构造函数和析构函数,其中对象本身具有指向整数的指针数组
- 如果我在析构函数中创建一个对象,会发生什么
- 是否可以在容器之类的堆栈中创建非递归析构函数
- 将 new[] 创建的对象传递给类,析构函数以进行必要的删除
- 创建'new'实例可以解决析构函数崩溃问题?
- 为具有许多友元函数c++的模板类(2d动态)创建析构函数
- 如何为类创建析构函数
- 是否可以使用 std::shared_ptr 创建共享对象池,并在没有自定义析构函数的情况下创建weak_ptr
- 为什么在静态创建 OBJ 时调用私有析构函数
- 为这个二进制节点类创建析构函数的正确方法是什么
- 为什么在数组创建期间抛出未捕获的异常时不调用析构函数C++?
- 当我在extern c中创建对象时,是否调用了c++类析构函数