一.引用
& 的用法
1.逻辑与
2.位与
3.取地址符
4.引用,也就是别名
引用的概念
1.定义为引用时必须初始化
2.定义引用时不能有空引用
3.没有引用的引用
常引用
常引用可以引用字面常量
引用的好处
1.比指针方便,不用判断是否为空引用,但是使用指针必须判断是否为空指针
引用与指针的区别
从语法层面上看引用就是一个变量的别名,相当于给一个实体起了2个名字;从汇编层面看引用相当于一个自身为常性的指针。
为什么从语法层面喜欢使用引用呢?
因为引用安全。使用引用必须进行初始化,因此没有空引用。使用指针必须进行判空
二.内联
内联函数的处理方式是在函数的调用点直接代码展开。在计算机系统下,假如频繁的调用就会造成较大的时间开销。内联函数的引入减少了函数调用过程中开栈和清栈的开销
开销:函数的现场保护和现场恢复;调用函数得给函数开辟栈帧,以及函数调用完成栈帧的清除
汇编层面看内联
函数可以完成内联的特点:
1.函数功能单一,只有1/2行代码
2.内联函数内部不能存在if语句或循环语句
3.Debug版本无法实现内联,必须在Release版本下才可以实现内联
inline只是给编译器一个建议,是否真正采用内联与否取决于编译器
三.函数默认值参数
四.函数重载
模板处理函数重载
模板函数是类型重命名规则。 严禁将模板理解为宏替换规则
名字粉碎
C++将 返回类型,函数名称,参数类型作为最终调用函数名称的一部分
调用约定
函数的返回类型不同不可以进行重载
返回类型相同,参数类型相同,参数个数不同是否可以重载得看情况
如果函数参数没有缺省值(默认值)可以进行重载
一旦有默认值就不好说了,可能产生调用的二义性
五.extern关键字的用法
1…cpp中可以干预编译器对该函数采用什么什么方式进行编译。C方式还是C++方式
2.C语言中,可以告诉编译器,该函数是一个外部函数。该函数是同一个工程的其他文件中定义的函数
六.namespace
命名空间:解决全局变量名重复的问题。在不同的命名空间,可以进行区分
:: 作用域解析符