1、构造函数
作用:创建类对象,并初始化其成员。(可定义多个进行重载)
注:构造函数可以有参数,无返回类型,不能是虚函数,在类体外定义时其函数名前加上“类名 : :”,可重载
2、析构函数
作用:撤销类对象,回收资源
注:析构函数无参数,无返回类型,不能重载
3、有参构造函数
无参构造创建的类对象具有相同的初始化值,若需类对象按不同特征初始化不同的值,应采用有参构造函数;
初始化方式:
一般初始化 :函数体内初始化;
初始化列表初始化:函数体外初始化;
几种须在构造函数初始化列表中初始化的情况:
a.const成员
b.引用成员
c.有参构造对象成员(对象对应的类没有默认构造函数)
转换构造函数:
定义:构造函数只有一个参数,且该参数不是本类的const引用时,称为转换构造
作用:将一个其他类型的数据转换成一个类的对象
禁止转换构造:在单个参数的构造函数前加上关键字“explicit“,阻止转换构造,阻止定义对象时使用等号初始化对象;
4、缺省构造函数
C++规定,每个类必须有一个构造函数,没有构造函数就不能创建对象。若未定义构造函数,则C++提供一个缺省构造函数,该缺省构造函数是一个无参构造函数,仅创建对象,不进行初始化。若类中定义了构造函数,则C++不再提供缺省构造函数。如果还需要无参构造函数,必须自定义。
一个类若什么都没有被称为空类,一个空类的大小为1字节,并且编译器会为其隐式生成6个成员。
5、拷贝构造
格式:<类名 > : : <拷贝构造函数名>(<类名>&<引用名>)
作用:用一个对象值创建并初始化另一个对象;
特点:
a.拷贝构造函数名与类同名,无返回类型;
b.拷贝构造函数只有一个形参,该参数是对该类对象的引用。
其他作用:
a.将对象作为实参进行函数调用时,系统自动调用拷贝构造函数将对象值传递给形参对象;
b.当函数返回值为对象时,系统自动调用拷贝构造函数用返回对象值创建一个临时对象,然后再将临时对象值赋给接收函数返回值的对象;