c++内联函数,引用,默认参数

一、内联函数

1)内联函数是以空间换时间的做法,省去调用函数的额外开销。所以代码很长或者有循环/递归的函数不适宜使用内联。
2)inline对编译器而言只是一个建议,如果定义的函数体内有递归/循环等,编译器优化时会自动忽略掉内联。
3)Inline必须与函数定义放在一起,才能成为内联函数,仅将内联放在声明前是不起作用的。
4)一般情况下,内联函数只会用在函数内容非常简单的情况,如果内联函数代码过多会造成可读性差等问题。
5)定义在类内的成员函数默认定义为内联函数。可以使用所在类的保护成员和私有成员。
为什么inline能够很好的取代预定义?
6)Inline定义的内联函数,函数的代码在 使用时直接被替换,没有调用开销,提升了效率。
7)类的内联函数也是函数,编译器在调用时会检查它的参数,消除隐患
8)定义在类内的成员函数默认定义为内联函数。可以使用所在类的保护成员和私有成员。
9)函数的访问原理是在访问时从一个地址跳到另外一个地址,时间用的比较的多,内联函数是将一个函数放到调用的地方去,通过堆栈,牺牲了空间,节约了时间,当一个程序跳的地址幅度较大的时候应该建议计算机使用内联函数,缩短时间的效果较好,但是函数较复杂的时候,使用内联函数可能过分的良妃存储空间,以及可能会导致代码过长
原文链接:https://blog.csdn.net/lengxinxuexic/article/details/79741625

二、函数引用变量

1、c++中的&的含义
int rats;
int & rodents=rats;//make rodents an alias for rats
1)&作为地址,指向变量的地址。
2)&进行或与运算。
3)作为位运算。
4)类型标识符的一部分,就像声明char*指的是指向char的指针,int&指的是int的引用运行引用与变量的正式名字进行互换——他们都指向相同的值的内存单元(在编译器里面翻译为内存地址)。
2、引用与指针的区别
1)引用表示方法与指针不同。
2)必须在声明引用是将其初始化,而不能像指针那样,先声明,再出初始化。
3)指针类似于const指针。
3、引用传递
1)形参相当于是实参的“别名”,对形参的操作其实就是对实参的操作,在引用传递过程中,被调函数的形式参数虽然也作为局部变量在栈,中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。
4、注意const变量
1)使用const可以避免无意中修改数据造成的编程错误。
2)使用const使函数能够处理const与非const实参,否则只能接受非const数据。
5、 引用的的对象
1)基本数据类型结构体。
2)指针(已初始化)。
3)对象。
4)Const类型
5)函数
Ps:如果数据对象是数组,则只能用指针;
如果数据对象是结构,则使用引用或者指 针;
如果数据对象是类的对象,则使用引用或者指针。

三、默认参数

1、定义
默认参数是指当函数调用中省略了实参时自动的一个值。

例如
void print(char a,int a[],int b=1,int s=2)
2、注意
1)默认参数全部右对齐,并且可以是const类型的参数。
2)默认参数是使用堆栈的原理将默认参数存入栈底所以说默认参数是全部右对齐的。
3)默认参数是提供了一种便捷的方式,在设计的时候,通过默认参数可以减少要定义的析构函数,方法以及方法要重载的数量。

第一次发表博客有什么不妥之处敬请谅解,希望广大网友能够指出错误,我加以改正,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值