Неправильный ответ для Upwork C++ Test

Следующий вопрос является частью теста C++ на 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 ответ

Решение

Как написано, все 4 действительны.

  1. Это тривиально; это определение функции-члена класса.

  2. Это прототип функции для функции g, Требуется friend декларация, которая у вас есть. Иначе ни I ни значение по умолчанию x доступны для функции g,

  3. Это определение функции g, Требуется friend декларация, которая у вас есть, еще I не доступен для функции g,

  4. Это тривиально; это определение static член x,

Другие вопросы по тегам