这是三条法则背后的正确逻辑吗?

时间:2015-03-11 21:18:24

标签: c++

如果我们定义我们自己的析构函数,则意味着存在一些动态分配的变量。因此,我们还需要定义复制构造函数和复制赋值运算符,因为我们肯定正在某处处理指针。

这是规则背后的主要逻辑吗?

1 个答案:

答案 0 :(得分:2)

差不多。在C ++ 11中,这成为five的规则,因为通过声明析构函数或复制构造函数/赋值运算符来禁用移动语义。但最好遵循zero的规则,即使用RAII通过智能指针等自动释放资源。

请注意,您可能不需要直接处理指针需要自定义析构函数,但需要使用不通过RAII管理的资源,例如:通过fopen打开的文件,您必须为其调用fclose,或者与数据库等连接。因此规则是使用RAII,以便析构函数处理所获取的资源。