本文共 657 字,大约阅读时间需要 2 分钟。
目录
析构函数是类的一个成员函数,用于删除一个对象。
当一个对象超出以下范围时,析构函数会被调用:
(1) 函数结束时 (2) 程序结束时 (3) 包含局部变量的代码块结束时 (4) delete操作符被调用析构函数的函数名称与类名称相同,函数最前面加了一个波浪符号(~)。没有任何参数,没有任何返回值。
参考下面例子中的~string()函数。
class String{private: char *s; int size;public: String(char *); ~String(); }; String::String(char *c){ size = strlen(c); s = new char[size+1]; strcpy(s,c);} String::~String(){ delete []s;}
不行!仅仅只能有一个析构函数。没有任何参数以及返回值。
如果没有自定义析构函数,则编译器会创建一个默认析构函数。通常情况下默认析构函数可以正常工作,但是当有动态分配的资源时,就不行,需要自定义析构函数,去释放分配的资源。否则会出现内存泄漏。
当然可以!事实上,当基类含有virtual成员函数时,将析构函数定义为virtual,是一个很好的实践方法。这是C++的精髓。
转载地址:http://sqeji.baihongyu.com/