據我所知,friend
沒有被繼承。我有課Parent Person Child
。父母和人是彼此的朋友。家長有以下PROTECTED功能...C++朋友繼承
class Person
{
friend class Parent;
public:
Parent * parent;
}
class Parent
{
friend class Person;
protected:
virtual void Answer() = 0;
}
class Child : public Parent
{
void Answer()
{
std::cout << "Child!" << endl;
}
}
我的問題是,如果友誼不繼承,我怎麼能有以下...? (Person有一個指向父)
Person person;
Child child;
person.parent->Answer();
爲什麼這個孩子的輸出!和它不拋出試圖訪問一個虛函數時運行時錯誤?
我很困惑孩子的功能是如何實現的,程序沒有在運行時出錯,因爲我預計它會嘗試調用父的虛擬應答功能。
你有什麼遺產嗎?即你的子類的定義中的'class Child:public Parent'? – 2012-04-18 17:51:35
您不會在Q. – 2012-04-18 17:52:00
中看到的'Child'上調用任何函數,而不是描述您的代碼,請發佈一個微不足道(但完整)的代碼片段。那樣,我們都可以清楚你的繼承/友誼關係在回答時。 – 2012-04-18 17:52:09