析构函数和构造函数的注意事项
来源:互联网 发布: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)析构函数无需主动调用,如果主动调用析构函数,只会执行析构函数里的内容,不会释放内存(系统只会在程序结束时,调用析构函数完成资源的回收)。
对于构造函数和析构函数的 执行顺序:先构造的后释放。满足先进后出。
- 析构函数和构造函数的注意事项
- C++构造函数和析构函数中抛出异常的注意事项
- C++构造函数和析构函数中抛出异常的注意事项
- C++构造函数和析构函数中抛出异常的注意事项
- c++的构造函数与析构函数区别和使用析构函数的注意事项g
- string类的构造函数,析构函数,拷贝构造函数和赋值构造函数
- 构造函数和析构函数的构造规则
- String 的构造函数、析构函数和赋值函数
- string的构造函数,析构函数和赋值函数
- 构造函数、析构函数和函数的重载
- String的构造函数,拷贝构造函数、析构函数和赋值函数
- string类的构造函数,拷贝构造函数,析构函数和赋值函数
- String类的构造函数,析构函数,拷贝构造函数和赋值函数
- string类的构造函数,拷贝构造函数,析构函数和赋值函数
- 编写类String的构造函数、拷贝构造函数、析构函数和赋值函数
- string类的构造函数、析构函数、拷贝构造函数和赋值函数
- 编写类String 的构造函数、拷贝构造函数、析构函数和赋值函数
- 写String类的普通构造函数,析构函数,拷贝构造函数和赋值函数
- mybatis源码解析之SqlSession接口。
- VS2013+OpenGL配置
- 矩阵快速幂 -- 兔子繁殖(也就是斐波那契数列啦)
- 海量数据处理
- SpringCloud(七):Ribbon自定义配置
- 析构函数和构造函数的注意事项
- Python 多线程(高级教程)
- ThingInJava-IO笔记(NIO)
- 动态规划专题讲义之最大连续子序列之和
- elasticsearch实用篇之kibana安装以及使用
- Struts2中的ActionContext和ServletActionContext的区别
- POJ--1631
- Python XML解析(高级教程)
- Struts2入门(2): 应用简单示例