C++中析构函数相关的知识点
【摘要】 C++中析构函数相关的知识点
目录
析构函数和构造函数的区别
定义一个对象,c++自动调用构造函数建立该对象并进行初始化,那么当一个对象的生命周期结束时,c++会自动调用一个函数注销该对象并进行善后工作,这个特殊的成员函数叫做析构函数
析构函数和类名相同,但在前面要加~这个符号析构函数是没有函数返回类型的,与构造函数在这方面是一样的。但析构函数不带任何参数。一个类只有一个析构函数,这是和构造函数不一样的,
因为在类中构造函数时可以重载的,但时析构函数是只有一个,对象注销时,系统自动调用析构函数。若类说明中没有给出析构函数,则c++会给出一个缺省的析构函数。
析构函数的例子
观察代码一和代码二输出结果的异同:
代码一:
输出结果:
代码二:
输出结果:
小结
在上面我们定义了两个构造函数,所以我们定义的对象会根据对象传递的参数来自行选择构造函数,但是析构函数是总会在对象注销的时候执行,并且由于析构函数是没有参数,也没有返回值,所以构造函数是不能够重载的,因此在一个类中只能够有一个析构函数,并且如果我们不自定义析构函数的话,程序就会自动调用默认的析构函数
析构函数调用的条件
1、生命周期:对象生命周期结束,会调用析构函数。
2.delete:若一个对象是使用new运算符动态创建的,调用delete释放它时,会删除指针类对象。
3.包含关系:对象1是对象2的成员,对象2的析构函数被调用时,对象1的析构函数也被调用。
4.继承关系:当Father是Son的父类,调用Son的析构函数,会调用Father的析构函数。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)