构造函数和析构函数

来源:互联网 发布:网络测评中心 编辑:程序博客网 时间:2024/06/04 19:07
 构造函数是一种特殊的成员函数,与其他成员函数不同:
(1)构造函数的名字必须与类名同名
(2)它不具有任何类型,不返回任何值。
(3)构造函数的功能是由用户定义的,用户根据初始化的要求设计函数体和函数参数。
(4)构造函数可以重载
(5)构造函数的调用:当通过一个类创建对象时,系统会自动调用类的构造函数。如果类中构造函数重载时,系统根据创建对象时传递的实参来调用类中的其中一个构
造函数。(只有创建对象时,才会调用构造函数)。

(6)构造函数体主要功能是初始化成员变量。

(7) 如果在类中没有定义构造函数,则C++系统会自动生成一个构造函数,只是这个构造函数的函数体是空的,也没有参数。


使用默认参数的构造函数说明:
(1) 应该在声明构造函数时指定默认值,而不
能在定义构造函数时指定默认值。
(2) 声明构造函数时,形参名可以省略。
(3) 如果构造函数的全部参数都指定了默认值,则在定义对象时可以给一个或几个实
参,也可以不给出实参。
(4) 在一个类中定义了全部是默认参数的构造
函数后,不能再定义重载构造函数。


protected或private修饰的构函数
(1)、在类的外部创建对象时,不能调用protected或private修饰的构造函数。
(2)、当子类中的构造函数调用父类的private构造函数时会错,当子类中的构造函数调用父类中的public或protected构造函数时是对的。


析构函数
(1)、 析构函数(destructor)名字是类名的前面加一个“~”符号。没有参数,并且也不能重载。当对象的生命期结束时,会自动执行析构
函数。
(2)、 析构函数一般用于完成“清理”的工作。如果用户没有定义析构函数,C++编译系统会
自动生成一个析构函数,但它 什么操作都不进行。想让析构函数完成任何工作,都必须自定义的析构函数。


构造函数和虚构函数都不能被继承。