函数指针
使用typedef声明函数指针
typedef const double* (*p)(const double*, int);const double* func1(const double* a, int b){auto *c = new(double);*c = *a * b;return c;
}
// p则可以作为函数指针类型
p f = func1;
内联函数
使用关键字inline声明,在编译过程中对代码进行替换,能够按值传递参数。在调用次数多代码两大的情况下占用内存较多。与宏相比不能
函数形参为const引用时,新建临时变量的情况
- 实参类型正确,但不是左值
- 实参类型不正确,但可以转换为正确的类型
生成临时变量的情况下,对传入的实参做修改则无效,由按引用传递改变为按值传递。
左值和右值
- 左值(可以通过地址访问):常规变量(可修改左值)和const变量(不可修改的左值)
将引用形参声明为const引用的理由:
- 可以避免无意中修改数据
- 能够处理const和非const实参,否则只能接收非const数据
- 使函数能够正确生成并使用临时变量。
右值引用
对右值的引用