C++編のデフォルトパラメータと関数のリロード
1101 ワード
デフォルトパラメータの関数1関数を呼び出すときにすべてのパラメータを指定しなくてもよい2指定しなくてもよいパラメータにデフォルト値を与える
関数のリロード:2つ以上の関数は同じ関数名を取りますが、パラメータの個数やタイプが異なり、コンパイラは実パラメータとパラメータのタイプと個数の最適な一致に基づいて、どの関数を呼び出すかを自動的に決定します.これが関数のリロードです.注意2点:1 2つ以上の関数は同じ関数名をとり、2パラメータの個数またはタイプが異なる場合、1組のリロード関数(デフォルトパラメータ付き)が同じ実パラメータの個数の呼び出しを許可すると、呼び出しの二義性が発生し、エラーが発生します.たとえば、次のようにします.
一般的なC言語ヘッダファイルフォーマット
void func(int a = 1,int b ,int c = 3,int d = 4);//error
void func(int a ,int b ,int c = 3,int d = 4);//ok
//void func(int ,int ,int = 3,int = 4);
:
func(10,15,20,30);//ok
func();//error : a
func(12,2);//ok c d
func(2,15, ,20);//error
関数のリロード:2つ以上の関数は同じ関数名を取りますが、パラメータの個数やタイプが異なり、コンパイラは実パラメータとパラメータのタイプと個数の最適な一致に基づいて、どの関数を呼び出すかを自動的に決定します.これが関数のリロードです.注意2点:1 2つ以上の関数は同じ関数名をとり、2パラメータの個数またはタイプが異なる場合、1組のリロード関数(デフォルトパラメータ付き)が同じ実パラメータの個数の呼び出しを許可すると、呼び出しの二義性が発生し、エラーが発生します.たとえば、次のようにします.
void func(int);
void func(int , int = 4);
void func(int = 3, int = 4);
func(7);//error,
func(20,30);// ? , 。
一般的なC言語ヘッダファイルフォーマット
#ifndef _FUNC_ //
#define _FUNC_
#ifdef _cplusplus // c++ , c ,
extern "C" {
#endif
...
void func();
...
#ifdef _cplusplus
}
#endif
#endif