0
正如所說 - 「朋友不會繼承」。
這意味着友誼獲得繼承?奇怪的
class c
{public:
friend void i_am_friend();
};
class d:public c
{public:
//
};
這裏無效i_am_friend()在d類是不能繼承。在更多的技術術語(我覺得這種方式。)
d類的對象將不會分配內存對於void i_am_friend(),因爲它是基類的朋友。
現在考慮問題編號。 14.3在本頁面 http://www.parashift.com/c++-faq/friends.html
class Base {
public:
friend void f(Base& b);
...
protected:
virtual void do_f();
...
};
inline void f(Base& b)
{
b.do_f();
}
class Derived : public Base {
public:
...
protected:
virtual void do_f(); // "Override" the behavior of f(Base& b)
...
};
void userCode(Base& b)
{
f(b);
}
這個代碼怎麼能是正確的?因爲
類派生d; // d不會有朋友功能
類基* B =&d; //因此b也沒有成員函數
因此,在這裏調用f(b)應該是錯誤的。
那麼,什麼是正確的說法: -
友誼是不會繼承
或友誼被繼承,但不能在派生類中使用