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,是一个很好的实践方法.相关文章推荐
- C++构造与析构(19) - 显式地调用构造函数和析构函数
- C++构造与析构(10) - private析构函数
- C++构造与析构(11) - 析构函数的行为
- C++构造及析构函数调用问题
- C++:复数类构造函数、拷贝构造、运算符重载、析构函数
- C++ - 派生类(derived class) 的 构造(construct) 和 析构(destruct)顺序 详解
- C++构造、析构函数和友元类小总结
- c++:构造方法、析构方法
- C++ - 对象模型之 构造和析构函数都干了什么
- C++程序:C++ 构造、析构的顺序
- 一个有关C++中对象构造、析构和虚函数的问题
- C++构造与析构(17) - virtual拷贝构造函数
- 【C++】类和对象(构造与析构)
- c++构造和析构能不能抛异常的总结!
- c++ 继承 + 构造、析构函数
- Effective C++ Item 9 绝不在构造和析构过程中调用virtual函数
- C++ 构造/析构函数中调用虚函数的问题
- c++之构造析构函数
- C++继承的构造和析构
- C++ 将对象的构造和析构函数声明为Protected的作用