如果一個Derived類是從一個Base類私下繼承而Derived類具有一個friend函數f(),那麼f()可以從Derived類和Base類訪問哪些成員。具有私有繼承的派生類中的朋友函數
class Base {
public:
int a;
protected:
int b;
private:
int c;
};
class Derived: private Base {
void friend f() {}
public:
int d;
protected:
int e;
private:
int f;
};
我明白,如果一個類是從基類私下繼承的,那麼在派生類中一切都是私有的。
但是爲什麼在上面的代碼中,函數f()可以訪問a,b,d,e,f但不是c?
+1類比。 – 2010-01-26 21:34:01
這種情況下的比喻會更接近:「允許我的朋友進入我的房子不會允許他們訪問我父親的保障,我無法打開自己' – 2010-01-26 21:57:47
@dribeas:是的 - 您的類比更接近於C++行爲。 – 2010-01-26 22:05:04