您的位置:首页 > 编程语言 > C语言/C++

C++构造与析构(3) - 析构函数

2015-05-24 10:00 141 查看

什么是析构函数

析构函数是类的一个成员函数,用于删除一个对象。

析构函数什么时候被调用

当一个对象超出以下范围时,析构函数会被调用:

(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成员函数时,将析构函数定义为virtual,是一个很好的实践方法.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: