C++类和对象(2)

内联函数

在讲内联函数时,我们要考虑考虑在调用少量代码函数时的时间开销,在这样的函数中,大部分时间都花费在开辟栈帧上,而对于简单逻辑而言,宏函数又不够安全,所以诞生了内联函数,内联函数可以在调用函数时,取消开辟栈帧,从而减少时间的开销。
内联函数的定义,使用关键字inline。!
在这里插入图片描述
内联函数的调用
在这里插入图片描述
内联函数直接在调用处展开函数的内容。
这个方法和#define定义的函数有相同之处,但是内联函数要比宏函数更加安全。
1.宏不进行类型检查,但是函数会进行类型检查。
2.宏的完全替换会导致传递带有副作用的参数或调用宏函数时会导致计算出错。
内联函数的注意事项
1.内联函数在编译过程中不会被汇总到符号表,所以无法通过符号表找到内联函数的地址,所以内联函数的声明和定义不能分开。
2.在类中,短的定义函数默认内联。

内联函数的缺点

  • 内联函数的函数体不能太长,inline关键字只是向操作系统申请内联,是否被内联还要看如代码行数…,同时内联函数不能是递归函数。
  • 由于内联函数调用直接展开的特性,导致频繁使用内联函数会导致可执行程序的大小过大。

比如某一项目调用某函数10000次,该函数100行。
若该函数内联,则汇编代码为10000*100行。
若该函数非内联,则汇编代码为10000+100行。

带缺省参数的函数

带缺省参数的函数在不传递参数时使用参数的缺省值带入计算,同时缺省值只能从右向左缺省,否则会有二义性。
在缺省参数的函数定义和声明分离时,定义要带缺省值,声明不能带缺省值,以免声明和定义不符合。
若所有的参数都有缺省值,被称为全缺省,一部分参数有缺省值,被称为半缺省

拷贝构造函数

拷贝构造函数依旧时构造函数的一种,它给我们提供了一种由同类型的对象来初始化另一个对象的方法。

定义

在类中,默认存在一个拷贝构造函数,该函数对于默认类型进行拷贝,对于自定义类型去调用其本身的默认构造。
声明拷贝构造时,参数必须是一个与类类型相同的引用,如果传值,则会导致无限递归。
在这里插入图片描述

运算符重载(初)

我们若想对自定义类型进行运算,运算符是不支持的,那么我们就要对运算符进行重载。
使用operator关键字+需要重载的运算符进行重载。
在这里插入图片描述
重载的运算符若写在类内,由于存在this指针,所以双目操作符不需要写2个参数。

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值