文章目录
构造函数
构造函数没有返回值类型,函数名和类名相同,而且可以重载,使用不同的函数参数进行对象初始化。
初始化列表
初始化列表的初始化顺序
调用其他的构造函数“委派构造函数”
C++11的就地初始化
这里使用了两种初始化方法:1、使用等号2、使用大括号(也就是初始化列表)
默认构造函数,或称“缺省构造函数”
自动调用成员变量的默认构造函数
如果成员表量中含有对象,会先实现成员变量的构造函数
隐式定义的默认构造函数
显示声明默认构造函数
如果我们自己定义了构造函数,就不会自动生成默认构造函数
显式删除构造函数
使用delete
关键字
对象数组的初始化
析构函数
进行动态内存的释放
析构函数可以有更多的操作
隐式定义的析构函数
局部对象的构造和析构
- 作用域:变量能够引用的区域,{ }会形成一个作用域
- 局部对象:析构函数会在生命周期结束时被调用
全局对象的构造和析构
尽量少用全局对象(使用函数参数代替)
引用
引用就是对同一个变量的不同名称,使用任一个变量名进行变量的修改赋值,都可以改变变量的值,并且引用不像指针可以转换指向的对象。
引用作为函数参数
引用作为函数返回值,就可以直接修改值
引用和指针的区别
为什么使用引用
优势:更灵活地支持运算符重载
- 创建时必须初始化
类的运算符重载
如果是成员函数,则只需要一个函数参数,因为已经有this指针指向当前对象。
可以重载的运算符
前缀和后缀的++和–
使用哑元参数进行判断
只能成员函数重载的运算符
输入输出流运算符的使用
习题
1
答案是A,我当时选成了C,因为我觉得用int型的x来初始化A类型的a,会造成类型不匹配。
但是a(x)的意义是调用了A的int构造函数
2
全局对象会在main函数之前进行初始化,并且在main函数结束之后再进行析构
3
因为fuc2中返回的tmp对象其实已经被析构了,对象已经被销毁,因此是运行错误的
返回引用不能返回临时变量的引用
如果tem是全局的,应该是会返回4_7