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

时间:2021-10-28 13:16:37

      内联函数

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

         五   在定义重载函数时,应注意同名函数要具有相同的功能。