首页 > 代码库 > c++中构造函数和析构函数

c++中构造函数和析构函数

一、构造函数的特点

1)构造函数是类的一个特殊的成员函数,函数名与类名相同;

2)构造函数的访问属性应该是公有(public)访问属性;

3)构造函数的功能是对对象进行初始化,因此在构造函数中只能对数据成员做初始化,这些数据成员一般为私有成员,在构造函数中一般不做初始化以外的事情;

4)构造函数可以在类内定义也可以在类外定义;

5)构造函数无函数返回类型。注意:是什么也不写,也不可写void

6)在程序运行时,当新的对象被建立,该对象所属的类的构造函数自动被调用,在该对象生存期中也只调用这一次。

7)构造函数可以重载。类中可以有多个构造函数,它们由不同的参数表区分,系统在自动调用时按一般函数重载的规则选一个执行。

二、使用初始化表来实现对数据成员的初始化

初始化表的一般格式:

类名::构造函数名(参数列表):初始化表

{

     构造函数其他实现代码

}

初始化表的格式:

    对象成员1(参数名或常量),对象成员2(参数名或常量),……对象成

n(参数名或常量)

例如例1.4定义的构造函数可以改用以下形式:

Cdate:: Cdate(int y, int m,int d): year(y), month(m),day(d){   }

注意:这种写法方便、简洁。许多C++程序员喜欢用这种方式初始化所有的数据成员。除了构造函数可以使用初始化表外,类的其他成员函数也可以根据需要使用初始化表。


一、析构函数的作用

        是一个特殊类成员函数,它的作用与构造函数相反。析构函数的作用是在对象生存期结束之前自动执行,做清理工作。

   例如:

         一个类可能在构造函数中分配资源,这些资源要在对象的生存期结束以前释放,释放资源的工作就是自动调用类的析构函数完成的。 

二、析构函数的特点

1)析构函数函数的名字特别,是类名加“~”字符,表明它与构造函数相反;

2)析构函数没有参数,不能指定返回值类型;      

3)一个类中只能定义一个析构函数,所以析构函数不能重载;

4)在对象生存期结束时,系统自动调用析构函数。

c++中构造函数和析构函数