------------恢复内容开始------------
引用"&"是标识符的别名,在定义一个引用时,必须同时进行初始化,比如int &a=b;则初始化a是b的别名,a随b的变化而变化;
一旦被引用后,就不能再指向其他对象
引用可以作为形参,实现双向传递
在定义引用a的时候就要初始化;
使用:


如果可变参数类型一样,可使用initializer_list;
如果不一样,使用类模板(第9章)介绍

注意:
内联函数要充分简单,函数体内不能有switch语句和循环语句
内联函数不能有异常接口声明(第十二章)
内联函数调用之前要有定义
编译器可能采用该建议也可能不采用,在充分简单的函数编译器会自动转化为内联函数
使用:
如double f(int m){......}要建议使用为内联函数时,则变为inline double f(int m){......}
好处:
可以避免转子函数和返回的开销
constexpr修饰的函数的变量如果都是常量表达式(constexpr),则返回值也一定是constexpr
constexpr修饰的函数有且仅有"return .."一条语句
使用:
constexpr int f(){return 20;}
constexpr int foo=f();(foo是一个常量表达式)
带默认参数值函数应该把没有默认参数值的参数放在左边,含有默认参数值的参数放在右边,且参数的结合是从左到右的,也就是说,当参数不够时,被视为右边参数缺失,则使用对应的默认参数值;

默认参数值定义与函数调用的相对位置:
注意图片的示例
总的来说,注意两点
1、默认参数值的体现只能一次,不能次次体现
2、谁在前谁体现

使用:

C++允许功能相近的函数在相同的作用域内以相同函数名声明,从而形成重载。方便使用,便于记忆

以下都是错误的,后两个是由于功能不相关,虽然语法正确,但功能完全相反,使用起来易混淆

完成对象被删除前的一些清理工作,析构函数不能有return语句,且没有参数表。
在对象的生存期结束的时刻系统自动调用它,然后再释放此对象所属的空间。
如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数,其函数体为空。
原文:https://www.cnblogs.com/xiao-qingjiang/p/12545461.html