频道栏目
读书频道 > 软件开发 > C++ > Visual C++ 2010程序设计案例教程
3.4.2 析构函数
2012-11-14 09:38:52     我来说两句
收藏   我要投稿
本书从实用的角度出发,汲取了国内外程序设计教材的精华,由浅入深、循序渐进地介绍了Visual C++ 2010开发环境、C++语言基础、面向对象的C++程序设计思想、MFC基本应用程序、用户界面设计、对话框和常用控件、...  立即去当当网订购

析构函数也是一种特殊的成员函数,用来释放类中申请的内存或在退出前设置某些变量的值。当类对象离开它所在的作用范围或者释放一个指向类对象的指针时,系统就会自动调用析构函数。析构函数不是必需的,主要用于释放互斥锁或者释放内存,或者当类对象不再使用时需要执行该特殊操作。

析构函数的函数名和类名相同,并且在前面加上一个“~”。该函数没有任何参数,不返回任何值,声明格式:

~<函数名>();

在代码实现时,析构函数的定义方式与普通成员函数相同。

但是,析构函数可能会在程序的许多退出点被调用,所以尽量不要将它定义为内联函数,否则会导致程序代码的膨胀,降低程序执行效率。

示例ex03_20 演示析构函数的使用和定义方式。

class exam

{

private:

 char *str;

public:

 exam ();// 构造函数

 ~exam ();// 析构函数

 void show();

};

exam:: exam ()

{

 str=new char[10];

 str[0]='h';

 str[1]='i';

 str[2]='\0';

}

void exam::show()

{

 cout<<str<<endl;

}

exam::~exam ()

{

 cout<<"析构函数!"<<endl;

 delete[] str;

}

int main()

{

 exam s1;

 s1.show();

 cout<<"退出"<<endl;

 return 0;

}

程序运行结果如下:

hi

退出

析构函数!

程序分析:程序中声明了一个构造函数和一个析构函数,在构造函数内为属性str申请了10个字节的内存并初始化。在退出程序前自动调用了类的析构函数,释放了为str申请的内存。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.4.1 构造函数
下一篇:3.5 本章小结
相关文章
图文推荐
排行
热门
最新书评
文章
下载
读书
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站