Неправильный ответ для 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 действительны.
Это тривиально; это определение функции-члена класса.
Это прототип функции для функции
g
, Требуетсяfriend
декларация, которая у вас есть. Иначе ниI
ни значение по умолчаниюx
доступны для функцииg
,Это определение функции
g
, Требуетсяfriend
декларация, которая у вас есть, ещеI
не доступен для функцииg
,Это тривиально; это определение
static
членx
,