1

私の先生は[A]は正しい答えだと言いましたが、なぜそうではないのですか[C]。プロトタイプとしてのオプション[B]の何が問題になっていますか。オプション[B]は私には完全にうまく見えます

次の関数プロトタイプのどれが完全に受け入れられますか?

[A]。 int Function(int Tmp = Show());

[B]。 float Function(int Tmp = Show(int, float));

[C]。AもBも。

[D]。 float = Show(int, float) Function(Tmp);

4

1 に答える 1

6
float Function(int Tmp = Show(int, float));

Functionこれは、を返し、呼び出されたfloatである引数を 1 つ取る関数 called を定義します。にはデフォルト値が与えられていますが、デフォルト値は無効な部分です。は何の値ですか?と呼ばれる関数を呼び出す(または type の一時オブジェクトを構築する) ことを望んでいるようで、引数としてandを渡します。ただし、関数への有効な引数ではありません。intTmpTmpShow(int, float)ShowShowintfloatintfloat

Show(int, float)実際、 C++ 文法を (プリプロセッサを使用せずに) 生成できると考えられる場所はわずかしかありません。最初は の関数宣言の一部ですShow。例えば:

int Show(int, float);

2 つ目は、Showが型の場合、関数型を指定することです。たとえば、次のようになります。

foo<Show(int,float)>();

おそらく他にもいくつかの同様のケースがありますが、実際に という関数を呼び出すものはありませんShow

于 2012-12-28T16:15:02.587 に答える