Upwork C++ Test的错误答案

Mee*_*ons 4 c++ language-lawyer

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

class A {
    typedef int I; // private member
    I f();
    friend I g(I);
    static I x;
};
Run Code Online (Sandbox Code Playgroud)

以下哪项有效:

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;

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

我对吗?还是我错过了什么?

Bat*_*eba 6

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

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

  2. 这是函数的函数原型g.需要friend您拥有的声明.否则,该函数既I不能x访问也不能访问默认值g.

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

  4. 这是微不足道的; 这是static会员的定义x.