博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++构造与析构(3) - 析构函数
阅读量:4070 次
发布时间:2019-05-25

本文共 657 字,大约阅读时间需要 2 分钟。

目录


1.什么是析构函数

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

2.什么时候被调用

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

(1) 函数结束时
(2) 程序结束时
(3) 包含局部变量的代码块结束时
(4) delete操作符被调用 

3.与普通成员函数的差异

析构函数的函数名称与类名称相同,函数最前面加了一个波浪符号(~)。没有任何参数,没有任何返回值。

参考下面例子中的~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;}

4.类能否有多个析构函数

不行!仅仅只能有一个析构函数。没有任何参数以及返回值。

5.什么时候需要自定义析构函数

如果没有自定义析构函数,则编译器会创建一个默认析构函数。通常情况下默认析构函数可以正常工作,但是当有动态分配的资源时,就不行,需要自定义析构函数,去释放分配的资源。否则会出现内存泄漏。

6.析构函数能否为virtual

当然可以!事实上,当基类含有virtual成员函数时,将析构函数定义为virtual,是一个很好的实践方法。这是C++的精髓。

转载地址:http://sqeji.baihongyu.com/

你可能感兴趣的文章
Yotta企业云盘助力科技行业创高峰
查看>>
Yotta企业云盘更好地为教育行业服务
查看>>
Yotta企业云盘怎么帮助到能源化工行业
查看>>
企业云盘如何助力商业新发展
查看>>
医疗行业运用企业云盘可以带来什么样的提升
查看>>
能源化工要怎么管控核心数据
查看>>
媒体广告业如何运用云盘提升效率
查看>>
企业如何运用企业云盘进行数字化转型-实现新发展
查看>>
司法如何运用电子智能化加快现代化建设
查看>>
iSecret 1.1 正在审核中
查看>>
IOS开发的开源库
查看>>
IOS开发的开源库
查看>>
Jenkins - sonarqube 代码审查
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成(一)
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成 - 单机部署(二)
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成 - 高可用集群部署(三)
查看>>
Golang struct 指针引用用法(声明入门篇)
查看>>
Linux 粘滞位 suid sgid
查看>>
C#控件集DotNetBar安装及破解
查看>>
Winform皮肤控件IrisSkin4.dll使用
查看>>