以下问题是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;
在我看来,所有答案都是有效的。我测试了它们,它们工作得很好!
我是对的吗?或者我错过了什么?
答案 0 :(得分:6)
它的编写方式,所有4个都是有效的。
这是微不足道的;它是类成员函数的定义。
这是函数g
的函数原型。需要您拥有的friend
声明。否则,I
函数无法访问x
和默认值g
。
这是函数g
的定义。需要您拥有的friend
声明,否则I
无法访问g
。
这是微不足道的;它是static
成员x
的定义。