1、内联函数
为了程序运行的高效性,将比较短小的函数设置为inline函数,在编译时直接进行替换,而不是在执行时再进行函数调用,这样节省了运行时间。
2、引用
引用是一别名,对引用的操作会直接影响到相应的内存值。在函数传参时,引用可以不用复制内存块,对于结构比较大的类型来说,比较划算。
3、默认参数
函数定义时,设置默认参数,这样在调用函数时,可以不输入这个参数,而采用默认的参数。
4、函数重载、模板
重载的意思是同一个函数名,可以具有不同的处理动作,这就叫做重载,它的要求是函数的特征标不同,即参数个数或者类型至少有一个不同。如:
void swap(int &a,int &b); void swap(int *a,int *b,int n); |
对于执行类似的操作的函数,但是操作值类型不同时,如int char double…,可以用设置函数模板。程序在运行时,根据函数模板实例化函数。
template <typename T>//声明 void swap(T &a,T &b);
main()//主函数 { ****
}
template <typename T>//定义 void swap(T &a,T &b) { T temp; temp=a; a=b; b=temp; } |
5、模板重载
模板的要点在于操作数使用共同的算法,即有共同点采用模板以降低代码冗余。
而重载的要点在于操作的名称相同,即函数名字相同。对于不同的操作数需要使用相同含义的函数,但是具体操作不同,这时候可以用模板重载。如
template <typename T> void swap(T &a,T &b);
template <typename T> void swap(T *a,T *b,int n); |
6、函数模板具体化
编写的模板有可能无法处理某些类型(总有特殊情况),即只好特别声明一个模板来处理这种情形。程序运行时,程序选择有优先级:非模板>显示具体化>模板