0
我遇到this未解答的问题,这真的令人费解。这种行为应该是有意义的吗?它是否在标准?这是一个问题:派生的基地访问的朋友
class parentFriend;
class parent
{
friend class parentFriend;
public: void f1(){};
protected: void f2(){};
private: void f3(){};
};
class childpub: public parent {};
class childprot: protected parent {};
class childprv: private parent {};
class parentFriend
{
public:
void f()
{
/* which of the following statements will compile? why? why not?*/
parent p; p.f1(); p.f2(); p.f3(); // these will compile
childpub cpub; cpub.f1(); cpub.f2(); cpub.f3();
childprot cprot; cprot.f1(); cprot.f2();
cprot.f3(); // does not compile
childprv cprv;
cprv.f1(); // does not compile
cprv.f2(); // does not compile
cprv.f3(); // does not compile
}
};
太好了,谢谢你。我的gcc 4.2.4仍然像原文中的那样。请告诉我,除了cpub.f1(),当然还有p.f?()之外,什么都可以编译,因为它们不应该。 –