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

1.类的构造函数和析构函数

类的构造函数:函数名与类名相同,没有返回值的函数;一个类实例化为一个对象时自动调用;构造函数可以重载

析构函数:与构造函数类似,只是在函数名钱多一个 ~ ,一个类只有一个析构函数,不能出现重载,在对象销毁时自动调用

注意:由于在构造函数中会初始化一些类的成员指针,在析构函数中删除,因此在不同的构造函数中给类的成员指针分配内存时,一定要统一用new或new[]

2.构造函数的初始化赋值

a.在构造函数的函数体中给类的成员赋值

b.在构造函数的初始化成员列表中进行初始动作

c.const成员变量必须在初始化成员列表中进行初始化(不进行初始化时会报错)

d.引用数据类型必须在初始化成员列表中赋值

3.构造函数的重载(同名不同参)

注意点:

缺省值:可在.h文件的构造函数中,直接对成员变量进行初始化

当使用缺省值时,可能出现有多个构造函数的实例与参数列表匹配,由于缺省值的存在,导致类在初始化时,不知道选用那个构造函数来进行初始化

缺省值的使用,使得参数列表不同的两个构造函数,可能出现程序不识别的情况

当缺省值遇上构造函数的初始化时,初始化具有较高优先级

4.函数成员变量的释放

函数中没有使用指针的成员变量在函数结束时,成员变量会自动释放,并调用类成员变量的析构函数

函数中使用指针的成员变量在函数结束时,成员变量不会自动释放,必须使用delete函数进行手动释放,否则不会调用析构函数

注意:在声明成员变量时,通常使用指针进行声明,在对应的.cpp文件初始化内存--在初始化内存时,要统一使用new 或new[]。然后在析构函数中使用delete []成员名或delete 成员名

不能再对应的.cpp文件中对指针进行赋值,会报错--显示;对基础类型的百年来那个赋值时,不会出现类似问题

猜你喜欢

转载自blog.csdn.net/simple_man_just/article/details/78187476