Upwork C ++ Test的错误答案

时间:2016-12-21 09:15:44

标签: c++ language-lawyer

以下问题是C ++ Test on Upwork的一部分。

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;

在我看来,所有答案都是有效的。我测试了它们,它们工作得很好!

我是对的吗?或者我错过了什么?

1 个答案:

答案 0 :(得分:6)

它的编写方式,所有4个都是有效的。

  1. 这是微不足道的;它是类成员函数的定义。

  2. 这是函数g的函数原型。需要您拥有的friend声明。否则,I函数无法访问x和默认值g

  3. 这是函数g的定义。需要您拥有的friend声明,否则I无法访问g

  4. 这是微不足道的;它是static成员x的定义。