C++基础---C语言部分3
一、函数模板:
模板是实现代码重用的重要工具,它方便大规模的软件开发。
C++的模板包括函数模板和类模板。
函数模板可以用来生成通用的函数,这些函数能够接受任意类型的参数,可返回任意类型的值,而不需要对所有可能的数据类型进行函数的重载。当编译器遇到函数调用时,将根据实参的类型和函数模板一起产生特定的代码。定义形式:
template <类型参数表> 返回值类型 函数名 ( 形式参数表 ) { //函数体 }
其中:<类型参数表>称为通用数据类型,可以包含基本的数据类型
template <class T1 class T2> //模板
void swap(T1 var1 , T2 var2) { T1 temp;
temp = var1;
var1 = (T1) var2;
var2 = (T2) temp;
}
注意:1.函数模板仅仅是对函数长相的声明,其自身不占用代码区的内存,当编译器遇到函数调用时,将在内存的代码区创建一个函数。
2.函数模板的定义必须出现在函数调用之前。模板通常放在".h"头文件中。
C++不但支持函数重载,也支持函数模板重载。
C++内联函数:为了解决函数调用的效率问题。
方法在定义时,在前面加上inline关键字。
inline bool isDigit (char ch){ return ch>='0' && ch<='9' ? true:false; }//内联函数是以增加目标代码为代价来换取时间的。
inline仅适用于功能简单,代码短小且被重复调用的函数。
内联函数内不允许使用循环语句、switch语句和嵌套的if等。即使这样定义了,系统会将他们当作一般函数处理,达不到优化的目的。
如果函数定义在函数调用之后,那么在声明函数时,就需要加上inline,否则视为一般函数。