构造函数和析构函数的功能和特点
构造函数和析构函数的功能和特点
构造函数和析构函数是在类体中说明的两种特殊的成员函数。
构造函数的功能是在创建对象时,使⽤给定的值来将对象初始化。
析构函数的功能是⽤来释放⼀个对象的。在对象删除前,⽤它来做⼀些清理⼯作,它与构造函数的功能正好相反。
构造函数的特点如下:
(1)构造函数是成员函数,函数体可写在类体内,也可写在类体外。
(2)构造函数是⼀个特殊的函数,该函数的名字与类名相同,该函数不指定类型说明,它有隐含的返回值,该值由系统内部使⽤。该函数可以有⼀个参数,也可以有多个参数。
(3)构造函数可以重载,即可以定义多个参数个数不同的函数。
(4)程序中不能直接调⽤构造函数,在创建对象时系统⾃动调⽤构造函数。
析构函数的特点如下:
(1)析构函数是⼀个特殊的成员函数,它的名字同类名,并在前⾯加“~”字符,⽤来与构造函数加以区别。析构函数不指定数据类型,并且也没有参数。
(2)⼀个类中只能定义⼀个析构函数,析构函数不能重载。
(3)析构函数可以被调⽤,也可以由系统调⽤。在下⾯两种情况下,析构函数会被⾃动调⽤。⼀是如果⼀个对象被定义在⼀个函数体内,则当这个函数结束时,该对象的析构函数被⾃动调⽤;⼆是当⼀个对象是使⽤new运算符被动创建的,在使⽤delete运算符释放它时,delete 将会⾃动调⽤析构函数。
若在类定义时没有定义任何构造函数,则编译器⾃动⽣成⼀个不带参数的缺省构造函数,其格式如下:
类名::缺省构造函数名()
{ }
构造函数可以被重载按构造函数的规定,缺省构造函数名同类名。缺省构造函数的这样格式也可以由程序员定义在类体中。在程序中定义⼀个对象⽽没有指明初始化,则编译器便按缺省构造函数来初始化该对象,对象的所有数据成员都初始化为零或空。
同理,如果⼀个类中没有定义析构函数时,则编译系统也⽣成⼀个缺省析构函数,其格式如下:
类名::~缺省析构函数名()
{
}
缺省析构函数名也同类名,缺省析构函数是⼀个空函数

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。