C++ 析构函数

来源:互联网 发布:国家软件资格考试认证 编辑:程序博客网 时间:2024/06/03 18:37

一、析构函数不能重载,如果没有定义析构函数,C++会自动定义合成的析构函数。如果有写析构函数,并不会覆盖合成的析构函数,先调用自己写的析构函数,再调用合成的析构函数。

二、三法则英语rule of threethe Law of The Big ThreeThe Big Three三法则三大定律)在 C++ 程序设计里,它是一个以设计的基本原则而制定的定律,三法则的要求在于,假如有明显地定义下列其中一个成员函数,那么程序员必须连其他二个成员函数也一同编写至类内,亦即下列三个成员函数缺一不可。 :

  • 析构函数(Destructor)
  • 复制构造函数(copy constructor)
  • 复制赋值运算符(copy assignment operator)

如何理解这句话,首先,从“如果需要析构函数”这里我们知道,类中必然出现了指针类型的成员(否则不需要我们写析构函数,默认的析构函数就可以用了),所以,我们需要自己写析构函数来释放给指针所分配的内存来防止内存泄露,那么为什么说“一定需要拷贝构造函数和赋值操作符”呢,原因还是这样:类中出现了指针类型的成员。有指针类型的成员,我们必须防止浅拷贝问题,所以,一定需要拷贝构造函数和赋值操作符,这两个函数是防止浅拷贝问题所必须的。

0 0