需要帮助理解有关朋友声明的段落

时间:2015-11-27 19:31:49

标签: c++ friend

但是,您可以在朋友声明中定义一个函数。 该类必须是非本地类,函数,函数名必须是非限定的,并且该函数具有命名空间范围。以下示例演示了这一点:

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

1 个答案:

答案 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
};
     

- 结束示例]