C++ 在什么情况下我应该创建自己的析构函数?

C++ 在什么情况下我应该创建自己的析构函数?,c++,constructor,variable-assignment,destructor,operator-keyword,C++,Constructor,Variable Assignment,Destructor,Operator Keyword,当我创建对象时,编译器会自动创建构造函数、析构函数和赋值运算符。什么时候我应该自己实现它们?当您需要执行生成的析构函数之外的操作时,您需要实现析构函数,这只是为每个基和成员调用析构函数 在实践中,这意味着有一些含义超出了单个成员的含义,需要同时理解多个领域;或 增加裸值;e、 g.智能指针类释放它所持有的指针 通常,如果需要编写复制构造函数、复制赋值运算符或析构函数中的任何一个,则需要编写所有这些运算符。这被称为。编写自己的析构函数的主要原因是释放动态分配的内存(例如,使用new在类内创建的内存

当我创建对象时,编译器会自动创建构造函数、析构函数和赋值运算符。什么时候我应该自己实现它们?

当您需要执行生成的析构函数之外的操作时,您需要实现析构函数,这只是为每个基和成员调用析构函数

在实践中,这意味着有一些含义超出了单个成员的含义,需要同时理解多个领域;或

增加裸值;e、 g.智能指针类释放它所持有的指针


通常,如果需要编写复制构造函数、复制赋值运算符或析构函数中的任何一个,则需要编写所有这些运算符。这被称为。

编写自己的析构函数的主要原因是释放动态分配的内存(例如,使用
new
在类内创建的内存)或在(不安全的)指针中调用
delete
(例如,删除未使用
std::unique_ptr
std::shared_ptr
创建的指针)


<> P>谷歌有很多好的结果,这是一个.< /p>这是什么语言?C++,对不起我编辑了你的意思是析构函数(不是“解构主义者”)如果使用new在类中分配内存,则可能必须实现3或5规则,而不是0规则。也就是说,如果您的类使用原始拥有指针拥有内存的所有权。修复了--当我在Chrome中使用键盘快捷键时,有时不会执行复制操作。