但是,您可以在朋友声明中定义一个函数。 该类必须是非本地类,函数,函数名必须是非限定的,并且该函数具有命名空间范围。以下示例演示了这一点:
class A { void g(); };
void z() {
class B { // friend void f() { }; };
}
class C { // friend void A::g() { }
friend void h() { }
};
虽然我明白了The class must be a non-local class
的意思,但是在逗号之后我或者用逗号包围的功能词是错误的吗?究竟整个段落一字一句地指的是什么意思。感谢
P.S上面的para是从ibm C ++参考中偷来的 - > https://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarg/cplr042.htm
答案 0 :(得分:1)
这是C ++ 14标准中的措辞:
[class.friend] / 6 函数可以在类的友元声明中定义当且仅当该类是非本地类(9.8)时,函数名称不合格,该函数具有命名空间范围。 [示例:
class M { friend void f() { } // definition of global f, a friend of M, // not the definition of a member function };
- 结束示例]