您的位置:首页 > 编程语言 > C语言/C++

C++语言之内联函数和重载函数

2015-02-11 21:39 204 查看
内联函数

在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语句定义的类型名来区分重载函数的参数。

五 在定义重载函数时,应注意同名函数要具有相同的功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: