函数
返回非引用类型:返回非引用类型会创建一个未命名的临时对象或副本
返回引用类型: 返回引用类型的函数,返回的不是指,返回的是对象。所以千万不能返回局部对象的引用.
默认实参
默认实参是通过给形参表提供明确的初始值来指定的。程序员可为一个或多个形参定义默认值。
【注意事项】
1)如果有一个形参具有默认实参,那么,它后面所有的形参都必须有默认实参。
2)函数调用的实参按位置解析,默认实参只能用来替换函数调用缺少的尾部实参。
3)设计带有默认实参的函数,其中部分工作就是排列形参,使最少使用默认实参的形参排在最前,最可能使用默认实参的形参排在最后。
4)既可以在函数声明也可以在函数定义中指定默认实参,但是,在一个文件中,只能为一个形参指定默认实参一次。
5)通常,应在函数声明中指定默认实参,并将声明放在合适的头文件中。
6)如果在函数定义的形参表中提供默认实参,那么只有在包含该函数定义的源文件中调用该函数时,默认实参才是有效的。
例://ff.h
int ff(int=0);
//ff.cc
int ff(int i=0);//error
内联函数
小操作定义一个函数的好处:
1)阅读和理解函数的调用,比读一条用等价的条件表达式取代函数调用表达式并理解他的含义要容易得多。
2)如果需要做任何修改,修改函数要比找出并修改每一处等价表达式容易得多。
3)使用函数可以确保统一的行为,每个测试都保证以相同的方式实现。
4)函数可以重用,不必为其他应用重写代码。
缺点:调用函数比求解等价表达式要慢得多。
内联函数避免函数调用的开销
1)将函数指定为内联函数,就是将它在程序中每个调用点上“内联地”展开;在函数返回类型前加上关键字inline就可以将函数指定为内联函数。
2)内联机制适用于优化小的,只有几行的而且经常被调用的函数。
3)内联函数的定义对编译器而言必须是可见的,以便编译器能够在调用点内联展开该函数的代码。
4)内联函数应该在头文件中定义,
5)内联函数可能要在程序中定义不止一次,只要内联函数的定义在某个源文件中只出现一次,而且在所有的源文件中,其定义必须是完全相同的。因此,将其放在头文件中,可以确保其定义是相同的。
重载函数
重载函数:同名不同形参
指向重载函数的指针:只需指向其中一个对应的版本就可以了
例: