c++中的 三/五原则

在c++ 中,当我们定义一个类时,我们显式或隐式地定义了此类型的对象在拷贝、赋值和销毁时做什么?

一个类通过定义三种特殊成员成员函数来控制这些操作:拷贝构造函数拷贝赋值函数析构函数

什么是三法则

C++三法则:如果需要析构函数,则一定需要拷贝构造函数和拷贝赋值操作符。

如何理解这句话,通常,若一个类需要析构函数,则代表其合成的析构函数不足以释放类所拥有的资源,其中最典型的就是指针成员。

所以,我们需要自己写析构函数来释放给指针所分配的内存来防止内存泄露。

那么为什么说“一定需要拷贝构造函数和赋值操作符”呢?

原因还是这样:类中出现了指针类型的成员。有指针类型的成员,我们必须防止浅拷贝问题,所以,一定需要拷贝构造函数和赋值操作符,这两个函数是防止浅拷贝问题所必须的。

什么是五法则

在较新的 C++11 标准中,为了支持移动语义,又增加了移动构造函数和移动赋值运算符,这样共有五个特殊的成员函数,所以又称为“C++五法则”;

也就是说,“三法则”是针对较旧的 C++89 标准说的,“五法则”是针对较新的 C++11 标准说的;为了统一称呼,后来人们干把它叫做“C++ 三/五法则”;

博客参考:https://blog.csdn.net/chen1415886044/article/details/104074210 

原文地址:https://www.cnblogs.com/simplepaul/p/12846752.html