1.指针形参
函数的形参是指针,此时是复制实参指针。也就是说要是在函数体内部改变形参的指针值对实参没有影响,但是要是改变形参指针所指向的值那么对应的实参所指向值也改变。
如需要保护指针所指向的值,则需将形参定义成指向const对象的指针
2.const形参:
void fcn(const int i ){}
由于实参仍然是以副本的形式传递,因此传递给fcn的既可以是const对象也可以是非const对象。
3.复制实参的局限性——也就是使用引用的情况
——当需要在函数体内部修改实参的值时;
——当需要以大型的对象作为形参时,因为复制对象所付出的时间和存储的代价大,如string类型等
——当形参的对象无法复制,多为对象的拷贝构造函数是私有的情况
4.引用形参
非const引用形参只能与完全类型的非const对象关联,例如对形参是string&类型就不能将常量的字符串赋给它.
既可以将const对象传递给非const形参,也可以将非const对象传递给const对象。但是形参与const形参的等价性仅适用于非引用形参。
5.通过引用传递数组
void printValue(int (&arr)[10]){...}
编译器检查数组实参的大小与形参的大小是否匹配,而对于其他类型的数组形参编译器不予检查。
6.返回引用
当函数返回引用类型时,没有复制返回值。返回的是对象本身。理解返回引用至关重要的是千万不能返回局部变量的引用。因为在函数调用结束后局部变量不存在的,引用所指向的内存不明。
7.默认实参
如果有一个形参具有默认实参,那么它后面的形参都得必须是默认实参的。既可以在函数声明也可以在函数定义的地方指定默认实参。但是在一个文件中,只能为一个形参指定默认实参一次。要么在声明的地方,要么是定义的地方。
8.内联函数
调用函数比求解表达式要慢得多的。所以有内联。在函数返回类型的前面加上inline即可使函数成为内联函数。内联机制适用于优化小的、只有几行的而且经常被调用的函数。内联函数应该在头文件中定义的,这不同于其他函数。
9.const成员函数的引入
const成员函数引入的原因是每个对象都隐含一个this的指针,指向自己,可以通过这个指针修改对象的成员变量。用const修饰的成员函数是常量成员函数,它不能修改调用该函数的对象,只能读取而不能修改,起到保护的作用。
10.重载函数