C++言語のインライン関数とリロード関数


インライン関数
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の違いは、関数パラメータタイプと関数戻り値タイプが異なることです.
プログラミングはいくつかの数の中の最小の1つを求めます:
#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,リロード関数の選択は以下の順序で検索され,実パラメータタイプと呼び出されたすべてのリロード関数のパラメータタイプを1つずつ比較する.
まず厳密に一致するものを探して、見つけたら、この関数を呼び出します.
二内部データ変換によって一致するものを検索し、見つかったら、この関数を呼び出す.
3最後に、ユーザが定義した強制変換によって一致するものを検索し、見つかったら、この関数を呼び出します.
4タイプ定義typedef文で定義されたタイプ名を使用して、リロード関数のパラメータを区別することはできません.
5リロード関数を定義するときは、同じ名前の関数が同じ機能を持つことに注意してください.