2016-12-21 6 views
2

次の質問は、Upworkに関するC++テストの一部です。有効な次のUpwork C++テストの間違った答え

class A { 
    typedef int I; // private member 
    I f(); 
    friend I g(I); 
    static I x; 
}; 

1)A::I A::f() { return 0; }

2)A::I g(A::I p = A::x);

3)A::I g(A::I p) { return 0; }

4)A::I A::x = 0;

すべての回答が有効であると思われます。私はそれらをテストし、彼らはうまく動作します!

私は正しいですか?または私は何かを逃している?

+2

'typedef'の後ろにセミコロンを追加しました。私はその問題については考えていません。 – Bathsheba

答えて

4

書いたとおり、4つすべてが有効です。

  1. これは簡単です。それはクラスメンバ関数の定義です。

  2. これは、関数gの関数プロトタイプです。持っているfriend宣言が必要です。そうでない場合は、ではIもデフォルト値xもアクセスできません。

  3. これは、関数gの定義です。あなたが持っているfriend宣言が必要です。そうでない場合は、はIにアクセスできません。

  4. これは簡単です。 staticメンバーxの定義です。

関連する問題