当前位置:主页   - 电脑 - 程序设计 - C/C++
浅谈C++类(7)--析构函数
来源:网络   作者:九天雁翎   更新时间:2011-09-08
收藏此页】    【字号    】    【打印】    【关闭

  不知不觉我都写了6讲了,的确这样讲出来的学习才能迫使我真的去调试每个书上出现的代码,去想些自己能讲出什么新的书上没有的东西,这才是真的学习吧,以前看完书,做道题式的就以为自己基本都掌握了,在类这里好像行不通,因为我的C基础不适合这里。呵呵不说题外话了。这次讲析构函数,相对于构造函数。析构函数就是在类的声明周期结束的时候运行的函数,一般用来把一个类的资源释放出来的家伙。就我了解,JAVA好像不需要这样的工作,他们有垃圾回收器,我看一个比较理性的程序员评价这种情况是有利有弊,类似的简化让JAVA成为了最佳商业模式开发软件,但是让JAVA程序员太脱离底层,让他们的知识匮乏,因为编JAVA不需要那么多知识,而且让JAVA失去了很多底层应用。另外这样的垃圾回收是耗资源的,当时Bjarne Strooustrup就考虑过也给C++加一个这样的特性,但他又说,作为一个系统开发级及常用来开发驱动程序的语言,他无法接受那样的效率损失。所以最后C++没有加上这个特性。又讲多了,看析构函数吧。

  例7.0:

#include <string>
#include <iostream>
using namespace std;
bool being = true;                 //定义一个全局bool变量
class Fruit               //定义一个类,名字叫Fruit
{
 string name;     //定义一个name成员          
 string colour;   //定义一个colour成员
public:
 void print()              //定义一个输出名字的成员print()
 {
  cout<<colour<<" "<<name<<endl;
 }
 Fruit(const string &nst = "apple",const string &cst = "green"):name(nst),colour(cst)
 {
 being = true;                          //表示这个东西存在
 }  //构造函数
 ~Fruit()                        //这就是传说中的析构函数
 {
 being = false;                      //表示他不存在了
 } 
};
int main()
{
 {
  Fruit apple("apple");  //定义一个Fruit类对象apple
  cout <<"apple being?: "<<being<<endl;             
 }
 cout <<"apple being?: "<<being<<endl;
 return 0;
}

编缉推荐阅读以下文章

  • 浅谈C++类(8)--重载输入输出操作符
  • 浅谈C++类(6)--复制构造函数
  • 浅谈C++类(5)--友元
  • 浅谈C++类(4)--隐式类类型转换
  • 浅谈C++类(3)--两个特殊成员mutable与static成员
  • 浅谈C++类(2)--一个简单的多文件具体例子
  • 浅谈C++类(1)--概念和构造函数
其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明