标签: c++
如果我们定义我们自己的析构函数,则意味着存在一些动态分配的变量。因此,我们还需要定义复制构造函数和复制赋值运算符,因为我们肯定正在某处处理指针。
这是规则背后的主要逻辑吗?
答案 0 :(得分:2)
差不多。在C ++ 11中,这成为five的规则,因为通过声明析构函数或复制构造函数/赋值运算符来禁用移动语义。但最好遵循zero的规则,即使用RAII通过智能指针等自动释放资源。
请注意,您可能不需要直接处理指针需要自定义析构函数,但需要使用不通过RAII管理的资源,例如:通过fopen打开的文件,您必须为其调用fclose,或者与数据库等连接。因此规则是使用RAII,以便析构函数处理所获取的资源。
fopen
fclose