関数を考えてみましょう:
void foo(int a = 3)//named default parameter
void foo1(int = 3)//unnamed default parameter
最初の関数の必要性を理解しました (「a」の値は 3 で、プログラムで使用できます)。しかし、2 番目の関数 (これはエラーではありません) では、3 が何も初期化されていません。この値を使用できる場合、この値を正確に使用するにはどうすればよいですか...
関数を考えてみましょう:
void foo(int a = 3)//named default parameter
void foo1(int = 3)//unnamed default parameter
最初の関数の必要性を理解しました (「a」の値は 3 で、プログラムで使用できます)。しかし、2 番目の関数 (これはエラーではありません) では、3 が何も初期化されていません。この値を使用できる場合、この値を正確に使用するにはどうすればよいですか...
関数の宣言/定義では、パラメーターに名前がある場合とない場合があります。これは、デフォルト値のパラメーターにも適用されます。
ただし、関数内でパラメーターを使用するには、名前を指定する必要があります。
通常、デフォルトのパラメータで関数を宣言する場合
// Unnamed default parameter.
void foo1(int = 3);
関数定義内
void foo1(int a)
{
std::cout << a << std::endl;
}
その後、あなたは呼び出すことができます
foo1(); // the same as call foo1(3)
foo1(2);
どちらの場合も、関数定義で決定される変数に3が割り当てられます。int
したがって、後のケースでは - void foo1(int = 3);
// 3 が - に割り当てられていますint
- 宣言変数名は必要ありません
これを関連付けることができます-void fun(int,int);
注:デフォルト引数の観点からではなく、関数宣言の観点から
// ここでは 2 つのint
変数を宣言していますが、関数の宣言時にその名前を付ける必要はありません。
編集:
@chethanが指摘したように-void foo1(int = 3){ }
関数定義でも有効ですが、後で(関数本体内で)使用できないことを行うことの使用法は何ですか。例:
void foo1 (int a, int =2)
{
// do something
// here you wont be able to use your second argument if you haven't gave it any name
}
なので、「関数定義で引数名を付けない」というのは無意味だと思います。