Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何为类创建析构函数_C++_Class_Destructor - Fatal编程技术网

C++ 如何为类创建析构函数

C++ 如何为类创建析构函数,c++,class,destructor,C++,Class,Destructor,我看到很多类的析构函数都是空的。然而,并非所有人都是这样。我们什么时候需要在析构函数中写入内容,有规则吗?如果类中的所有变量都是静态的,那么我们总是需要一个空的析构函数吗?当一个项被销毁时,需要一个析构函数。对于析构函数,您可能不需要做任何标准的事情 您可能选择对其使用析构函数的内容: 终止一些正在运行的线程 向用户提供有意义的信息 将重要内容打印到文件中,删除该项目后将丢失 使用delete(已使用new运算符分配的内存)取消分配内存 关闭internet连接套接字 > 析构函数< /代码>

我看到很多类的析构函数都是空的。然而,并非所有人都是这样。我们什么时候需要在析构函数中写入内容,有规则吗?如果类中的所有变量都是静态的,那么我们总是需要一个空的析构函数吗?

当一个项被销毁时,需要一个析构函数。对于析构函数,您可能不需要做任何标准的事情

您可能选择对其使用析构函数的内容:

  • 终止一些正在运行的线程
  • 向用户提供有意义的信息
  • 将重要内容打印到文件中,删除该项目后将丢失
  • 使用
    delete
    (已使用
    new
    运算符分配的内存)取消分配内存
  • 关闭internet连接套接字

  • <> > <代码>析构函数< /代码>是对每个项目进行作业的自动化方式,您可以选择“手动”执行这些任务,无论是在程序主体(不推荐)还是使用特定的方法来执行这些操作。

    如果您不定义任何构造函数,则C++将为您创建一个空的默认构造函数。p> 因此,答案是您可以自由决定是否定义空构造函数。在这种情况下没有任何区别

    如果类的所有变量都是静态的。。。这在很大程度上取决于具体情况,但根据经验,静态类通常不使用析构函数,因为它们不像“普通”类那样实例化

    有时,您确实需要在类static中包含所有变量。
    对于这种情况,甚至有一种解释。但这更像是一个例外,而不是一个规则。

    如果需要析构函数,请编写一个。如果你不这样做,你不这样做吗?如果看到析构函数,请查看代码并了解它的作用。它可能是需要的。如果你想在对象被销毁时做些什么,那么你需要一个析构函数。这就是析构函数。同样,如果类中的所有变量都是静态的,那么为什么还要有一个类呢?如果堆中的类中没有任何私有变量,我还需要在析构函数中使用delete来释放内存吗?您只对使用new分配的内存使用delete。