构造函数

构造函数没有返回值类型,函数名和类名相同,而且可以重载,使用不同的函数参数进行对象初始化。

初始化列表

【oop】【4】创建与销毁

初始化列表的初始化顺序

调用其他的构造函数“委派构造函数”

【oop】【4】创建与销毁

C++11的就地初始化

【oop】【4】创建与销毁

这里使用了两种初始化方法:1、使用等号2、使用大括号(也就是初始化列表)

默认构造函数,或称“缺省构造函数”

【oop】【4】创建与销毁

自动调用成员变量的默认构造函数

【oop】【4】创建与销毁

如果成员表量中含有对象,会先实现成员变量的构造函数

隐式定义的默认构造函数

【oop】【4】创建与销毁

显示声明默认构造函数

如果我们自己定义了构造函数,就不会自动生成默认构造函数
【oop】【4】创建与销毁

显式删除构造函数

使用delete关键字
【oop】【4】创建与销毁

对象数组的初始化

【oop】【4】创建与销毁

析构函数

【oop】【4】创建与销毁

进行动态内存的释放

析构函数可以有更多的操作

【oop】【4】创建与销毁

隐式定义的析构函数

【oop】【4】创建与销毁

局部对象的构造和析构

  • 作用域:变量能够引用的区域,{ }会形成一个作用域
  • 局部对象:析构函数会在生命周期结束时被调用
    【oop】【4】创建与销毁

全局对象的构造和析构

【oop】【4】创建与销毁

尽量少用全局对象(使用函数参数代替)

【oop】【4】创建与销毁

引用

引用就是对同一个变量的不同名称,使用任一个变量名进行变量的修改赋值,都可以改变变量的值,并且引用不像指针可以转换指向的对象。
【oop】【4】创建与销毁

引用作为函数参数

【oop】【4】创建与销毁

引用作为函数返回值,就可以直接修改值

【oop】【4】创建与销毁

引用和指针的区别

为什么使用引用

优势:更灵活地支持运算符重载

  • 创建时必须初始化

类的运算符重载

【oop】【4】创建与销毁
【oop】【4】创建与销毁
如果是成员函数,则只需要一个函数参数,因为已经有this指针指向当前对象。
【oop】【4】创建与销毁

可以重载的运算符

【oop】【4】创建与销毁

前缀和后缀的++和–

使用哑元参数进行判断
【oop】【4】创建与销毁

只能成员函数重载的运算符

输入输出流运算符的使用

习题

1

【oop】【4】创建与销毁

答案是A,我当时选成了C,因为我觉得用int型的x来初始化A类型的a,会造成类型不匹配。
但是a(x)的意义是调用了A的int构造函数

2

【oop】【4】创建与销毁
全局对象会在main函数之前进行初始化,并且在main函数结束之后再进行析构

3

【oop】【4】创建与销毁

因为fuc2中返回的tmp对象其实已经被析构了,对象已经被销毁,因此是运行错误的
返回引用不能返回临时变量的引用
如果tem是全局的,应该是会返回4_7

相关文章: