• 您的位置我爱Aspx >> VC.Net >> 接触VC,2:1
  • 接触VC,2:1

  • 作者:aspxer  来源:internet  日期:2007-5-21 23:48:49  关键字:
  • {//名域3

    strValue=bird.m_strWing;

    }

    }//<<就在后大括号这里引发了bird对象的析构函数

    strValue=”Blue Atlantis”;

    }

    这里有3个名域,我在名域2中声明了一只小鸟。因为名域3也被包括在名域2里,所以名域3中的空间也属于名域2,于是在名域3中引用小鸟对象是正确的。当执行指针离开名域2那一瞬,C++系统将会把在名域2中声明的所有变量及对象删除掉。

    当对象被删除时,首先会执行析构函数,然后系统再去释放对象所占用的内存空间。

    所以当执行到strValue=”Blue Atlantis”;这一句时,这只小鸟就已经不存在,再去引用它就会编译错误。

    另外,要讲一讲对象的建立。一种是像变量一样声明建立起来对象,像上面的Aves bird;另一种就是用new语句来建立起来对象。如:

    Aves *bird;

    bird= new Aves();

    new语句跟着一个类的构造函数,它会在内存建立起来一个对象,并把这个对象的指针返回出来。这样建立起来的对象没有名域空间的限制。如果要将这个对象删除掉必须手动的使用delete语句。如:

    delete bird;

    delete后面跟着指向要删除对象的指针变量。注意,这个指针变量的类型直接影响到对象的删除时所使用的析构函数。所以,什么类型的对象,就要用什么类型的指针来指向删除。

    真实的鸟类应该是可以飞翔(绝大部分),可以发出叫声,可以在陆上跑(至少可以跳)。所以我们也应该让我们的鸟类也可以跳,可以飞吧。于是,我要向类中添加成员函数。声明成员函数可以有两种方法,一种是在类的声明体里面,像上面例子中构造函数的声明方法,另一种是在类的声明体外面。外部的表现写法为 返回值 类名::函数名(参数列表)。注意::是由于两冒号组成。

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:如何在工具栏上添加平面下拉控件
    下一篇:自己动手做QQ木马----邮件发送篇
  • 相关文章