#include class a
virtual void vt()
private:
void a2()
protected:
void a3()
};class b : public a
virtual void vt()
private:
void b2()
protected:
void b3()
};int main()
結論:1、對於派生類和基類的訪問範圍:
(1)派生類可以直接訪問自身的公有成員函式和基類中的公有成員函式。
(2)私有成員變數、私有成員函式只能通過呼叫類中的公有成員函式來訪問,不能通過物件名直接訪問。派生類不能訪問基類的私有成員函式。
(3)保護成員變數、保護成員函式也只能通過呼叫類中的公有成員函式來訪問,不能通過物件名直接訪問。派生類可以通過公有成員函式訪問基類的保護成員函式。
2、關於指向派生類的基類指標和基類引用的訪問範圍:
(1)指向派生類的基類指標或者引用,其型別仍然屬於基類型別,而不是派生類型別,儘管它指向的是派生類。其訪問範圍受其基類型別影響,因此只能訪問基類中可以訪問的型別。
(2)對於虛函式,使用指向派生類的基類指標或基類引用訪問時,將會體現出多型性,呼叫的是實際上是派生類的對應函式。
(3)對於指向派生類的基類引用,雖然說引用通常是被引用物件的乙個別名,但這裡,基類引用的訪問範圍與被引用物件的訪問範圍明顯是不一樣的!
一句話這樣總結:當基類型別的指標或引用使用派生類的物件時,它對虛函式的呼叫,實際上是呼叫了被指向物件類的函式。注意,取決於被指向物件。
當它對非虛函式呼叫時,會使用基類自身的函式。
基類指標指向派生類物件
成員函式一般化三個結論 include using std cout using std endl class employee class dev public employee int main 1.如果以 基類指標 指向 派生類物件 那麼經由該指標只能呼叫基類所定義的函式 2.如果以 派生類指...
基類指標指向派生類物件
父類子類指標函式呼叫注意事項 1,如果以乙個基礎類指標指向乙個衍生類物件 派生類物件 那麼經由該指標只能訪問基礎類定義的函式 靜態聯翩 2,如果以乙個衍生類指標指向乙個基礎類物件,必須先做強制轉型動作 explicit cast 這種做法很危險,也不符合生活習慣,在程式設計上也會給程式設計師帶來困擾...
基類指標指向派生類物件
派生類物件也 是 基類物件,但兩者不同。派生類物件可以當做基類物件,這是因為派生類包含基類的所有成員。但是基類物件無法被當做成派生類物件,因為派生類可能具有只有派生類才有的成員。所以,將派生類指標指向基類物件的時候要進行顯示的強制轉換,否則會使基類物件中的派生類成員成為未定義的。總結 基類指標和派生...