8

関数を考えてみましょう:

void foo(int a = 3)//named default parameter
void foo1(int = 3)//unnamed default parameter

最初の関数の必要性を理解しました (「a」の値は 3 で、プログラムで使用できます)。しかし、2 番目の関数 (これはエラーではありません) では、3 が何も初期化されていません。この値を使用できる場合、この値を正確に使用するにはどうすればよいですか...

4

3 に答える 3

10

関数の宣言/定義では、パラメーターに名前がある場合とない場合があります。これは、デフォルト値のパラメーターにも適用されます。

ただし、関数内でパラメーターを使用するには、名前を指定する必要があります。

通常、デフォルトのパラメータで関数を宣言する場合

// 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);
于 2013-01-27T06:45:32.113 に答える
0

どちらの場合も、関数定義で決定される変数に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
}

なので、「関数定義で引数名を付けない」というのは無意味だと思います。

于 2013-01-27T06:35:59.303 に答える