正在加载图片...
第7单元类和对象(I) 139 <类名>~<类名>0 当一个对象的生存期结束时,系统将自动地调用析构函数来撤消该对象,返还它所占据 的内存空间 定义析构函数时应注意 1.析构函数名与类名相同,只是它的前边须冠以波浪号“~”以与构造函数区别开来 2.析构函数不得带有任何参数,即其参数表必须为空,即使关键字vod也不允许有。 因此,析构函数不能重载 3.析构函数不得返回任何值,即使关键字vod也不允许有 2.在析构函数中不得调用C++的库函数exit(),这是因为该函数会做一些清理工作, 包括撤消对象,困此,在析构函数中调用该函数时,该函数为撤消对象又会调用析构函数, 从而形成无限递归。如果必须在析构函数中终止整个程序的运行,则应调用库函数 abort () 析构函数一般用来作一些销毁对象前的扫尾工作,如用 delete运算符释放动态分配的存 储等。 与构造函数一样,如果在类的声明中没有显式地定义析构函数,则系统将自动产生一个 形如 <类名>~<类名>0 的缺省析构函数,其函数体为空 74对象与指针 可以声明指向对象的指针,方法与声明指向变量的指针相同。例如 Person personl(“ Zhang3”,19,f) 通过指针访问对象的成员要用运算符“->”,例如 ptr->GetAge o 在第6单元中介绍的new运算符可以用来动态建立一个对象,如 Person *pErson new Person 当然,用new建立的对象要用 delete释放: delete pErson 用new建立一个对象时,可调用类的构造函数。例如 Person* pErson= new Person(“ Zhang3”,19,“f”)第 7 单元 类和对象(I) - 139 - <类名>::~<类名>(); 当一个对象的生存期结束时,系统将自动地调用析构函数来撤消该对象,返还它所占据 的内存空间。 定义析构函数时应注意: 1.析构函数名与类名相同,只是它的前边须冠以波浪号“~”以与构造函数区别开来。 2.析构函数不得带有任何参数,即其参数表必须为空,即使关键字 void 也不允许有。 因此,析构函数不能重载。 3.析构函数不得返回任何值,即使关键字 void 也不允许有。 2. 在析构函数中不得调用 C++的库函数 exit(),这是因为该函数会做一些清理工作, 包括撤消对象,困此,在析构函数中调用该函数时,该函数为撤消对象又会调用析构函数, 从而形成无限递归。如果必须在析构函数中终止整个程序的运行,则应调用库函数 abort ()。 析构函数一般用来作一些销毁对象前的扫尾工作,如用 delete 运算符释放动态分配的存 储等。 与构造函数一样,如果在类的声明中没有显式地定义析构函数,则系统将自动产生一个 形如: <类名>::~<类名>() { } 的缺省析构函数,其函数体为空。 7.4 对象与指针 可以声明指向对象的指针,方法与声明指向变量的指针相同。例如 Person personl(“Zhang3”, 19, ‘f’); Person *ptr = &person1; 通过指针访问对象的成员要用运算符“->”,例如: ptr->GetAge(); 在第 6 单元中介绍的 new 运算符可以用来动态建立一个对象,如 Person *pPerson = new Person; 当然,用 new 建立的对象要用 delete 释放: delete pPerson; 用 new 建立一个对象时,可调用类的构造函数。例如 Person *pPerson = new Person(“Zhang3”, 19, ‘f’);
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有