- 論壇徽章:
- 0
|
以前的帖子沒搞明白:http://topic.csdn.net/u/20091204/16/440ccc4a-9a49-401a-984f-06f787a8aa3b.html?seed=1506412902&r=61706661#r_61706661
//--問題如下----------------------------------
class Base{
friend class Frnd;
public:
int pub_val;
protected:
int pro_val;
private:
int pri_val;
};
class public_derived : public Base {
};
class protected_derived : protected Base {
};
class private_derived : private Base {
};
class Frnd{
public:
int i;
int mem1(protected_derived d) {return d.pub_val;} //-1
int mem2(protected_derived d) {return d.pro_val;} //-2
// int mem3(protected_derived d) {return d.pri_val;}
// int mem1(private_derived d) {return d.pub_val;}
// int mem2(private_derived d) {return d.pro_val;}
// int mem3(private_derived d) {return d.pri_val;}
};
被注釋掉的是錯誤的地方, 但是標(biāo)注1和2可以編譯過,
Frnd是Base的友元,友元關(guān)系不得繼承;
所以Frnd不是public_derived類的友元,但是Frnd卻訪問了public_derived類的protected和private成員,
我有點不理解 |
|