【oop】【4】创建与销毁

构造函数

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

初始化列表

在这里插入图片描述

初始化列表的初始化顺序

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

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值