内联函数
在c++编程中,通常将代码短,访问频率高的函数定义为内联函数,这样可以提高效率。对于内联函数的定义方法是在一般函数的函数头前家关键字inline。
可以定义一个求一个数的平方的内联函数:
inline int asd_int(int x)
{
return x*x;
}
因此编程求出自然数1~10的各个数的平方的完整程序为:
<span style="font-size:18px;">#include <iostream.h>
inline int asd_int(int x);
void main()
{
for(int i=1;i<=10;i++)
{
int a=asd_int(i);
cout<<i<<'*'<<i<<'='<<a<<endl;
}
}
inline int asd_int(int x)//函数asd_int()是一个内联函数
{
return x*x;
}
</span>
在使用内联函数应注意:
1,内联函数内不允许有循环语句和开关语句。如果出现,则为一般函数。
2,内联函数的函数体一般不宜过大。
3,在类结构中,在类体内定义的成员函数都是内联函数。
重载函数
在C++程序中,重载函数实现了一个函数名可以对应不同的函数。如何从相同的函数名字中选择出所对应的不同函数?这些重载函数存在着函数返回值类型,函数参数的类型,函数参数的个数,函数参数的顺序的不同。
定义一个求几个数中最小的一个的重载函数:
1, int min(int,int);
2,int min(int,int,int);
3,double min(double,double);
1和2的不同之处在于函数参数的个数不同,1和3的不同之处在于函数参数类型和函数返回值类型的不同。
编程求出几个数中的最小的一个:
#include <iostream.h>
int min(int,int),int(int,int,int);
double min(double,double);
void main()
{
cout<<min(12,45)<<endl;
cout<<min(12,45,78)<<endl;
cout<<min(12.3,34.5)<<endl;
}
int min(int a,int b)
{
return a<b?a:b;
}
int min(int a,int b,int c)
{
int t=min(a,b);
return min(t,c);
}
double min(double a,double b)
{
return a<b?a:b;
}
此程序的输出结果为:12 12 12.3。
使用重载函数应注意:
1,重载函数至少在参数类型,参数个数或参数顺序上有所不同。仅仅在函数返回值类型上不同是不够的。
2,重载函数的选择是按照下述的先后顺序查找的,将实参类型与所有被调用的重载函数的形参类型一一比较
一 先查找一个太严格匹配的,如果找到了,就调用这个函数;
二 再通过内部数据转换查找一个匹配的,如果找到了,就调用这个函数;
三 最后通过用户所定义的强制转换查找一个匹配的,如果找到了,就调用这个函数。
四 不能使用类型定义typedef语句定义的类型名来区分重载函数的参数。
五 在定义重载函数时,应注意同名函数要具有相同的功能。