析构函数和构造函数的注意事项

来源:互联网 发布:alias软件下载 编辑:程序博客网 时间:2024/06/11 01:14

1构造函数:在C++中,使用构造函数来实现对象的初始化。
构造函数的特点:
(1)构造函数无需调用,建立对象时自动执行。
(2)构造函数的名称必须与类名相同,不能随意起名(不同以初始化函数,虽然和其功能相同);
(3)构造函数没有返回值。
(4)如果程序者没有自定义构造函数,系统会自动调用默认的构造函数。
(5)如果程序者自己定义了构造函数,则系统会调用定义的构造函数,而不会调用默认的构造函数。
(6)构造函数可以被重载。
(7)构造函数可以用初始化列表进行初始化。
必须使用初始化列表进行初始化的 :
(1)const修饰的类成员或初始化的引用成员数据;
(2)对象的情况(包含继承情况下,通过显示调用父类的构造函数对父类数据成员进行初始化);
(3)子类初始化父类的私有成员。
构造函数的分类
1)默认参数构造函数:不需要指定实参就可以调用的构造函数。
2)限制构造函数:可以将构造函数放到私有区限制某些形式的对象创建动作。
3)拷贝构造函数:用一个类对象去初始化另一个类对象。

对于拷贝构造函数,如果没有自定义拷贝构造函数,系统会提供默认的拷贝构造函数。
拷贝构造函数的参数是引用
引用:和指针的作用相同,引用是变量的别名,对引用的操作就是对变量本身的操作,不会给引用分配内存空间,和变量在同一块内存空间
2 析构函数:在对象生命周期结束时,完成资源的回收和清理。

析构函数的特点:
(1)析构函数的名称和类名相同,在前加~;
(2)没有返回值,没有参数;
(3)析构函数不能进行重载;
(4)在对象生命周期结束时自动调用析构函数完成资源释放;
(5)如果没有自定义析构函数,系统会提供默认的析构函数完成资源的释放;
(6)若果自定义了析构函数,就不会调用默认的构造函数,调用自定义的析构函数。
(7)析构函数无需主动调用,如果主动调用析构函数,只会执行析构函数里的内容,不会释放内存(系统只会在程序结束时,调用析构函数完成资源的回收)。
对于构造函数和析构函数的 执行顺序:先构造的后释放。满足先进后出。

阅读全文
0 0