C++,繼承,基類和派生類指標間賦值等知識
1、派生類物件也“是”基類物件,但兩者不同。
2、派生類物件可以當做基類物件,這是因為派生類包含基類的所有成員。
但是基類物件無法被當做成派生類物件,因為派生類可能具有隻有派生類才有的成員。
所以,將派生類指標指向基類物件的時候要進行顯示的強制轉換,否則會使基類物件中的派生類成員成為未定義的。
總結:基類指標和派生類指標指向基類物件和派生類物件的4種方法:
- 基類指標指向基類物件,簡單。只需要透過基類指標簡單地呼叫基類的功能。
- 派生類指標指向派生類物件,簡單。只需要透過派生類指標簡單地呼叫派生類功能。
- 將基類指標指向派生類物件是安全的,因為派生類物件“是”它的基類的物件。
但是要注意的是,這個指標只能用來呼叫基類的成員函式。
如果試圖透過基類指標呼叫派生類才有的成員函式,則編譯器會報錯。
為了避免這種錯誤,必須將基類指標強制轉化為派生類指標。然後派生類指標可以用來呼叫派生類的功能。這稱為向下強制型別轉換,這是一種潛在的危險操作。
注意:如果在基類和派生來中定義了虛擬函式(透過繼承和重寫),並同過基類指標在派生類物件上呼叫這個虛擬函式,則實際呼叫的是這個函式的派生類版本。 - 將派生類指標指向基類物件,會產生編譯錯誤。“是”關係只適用於從派生類到它的直接(或間接)基類,反過來不行。
基類物件並不包含派生類才有的成員,這些成員只能透過派生類指標呼叫。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/818/viewspace-2799578/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 繼承 基類與派生類繼承
- 類的繼承和派生繼承
- C++ | 類繼承C++繼承
- 類的繼承_子類繼承父類繼承
- C++ 派生類函式過載與虛擬函式繼承詳解C++函式繼承
- 區分:派生類指定基類建構函式、繼承構造、委託構造函式繼承
- C++中類繼承public,protected和private關鍵字作用詳解及派生類的訪問許可權C++繼承訪問許可權
- C++知識點49——類繼承與類的構造、拷貝、operator=和解構函式C++繼承函式
- 變數的賦值 指標間接賦值變數賦值指標
- 類的組合、繼承、模板類、標準庫繼承
- 菱形繼承與虛基類繼承
- JavaScript基礎: 類與繼承JavaScript繼承
- es5繼承和es6類和繼承繼承
- Java之繼承和抽象類Java繼承抽象
- 類的繼承繼承
- C++標準庫中檔案流類的繼承關係C++繼承
- C++ exception 異常類繼承關係C++Exception繼承
- corejava基礎知識(1)-繼承Java繼承
- C++ 類成員指標C++指標
- C++虛繼承原理與類佈局分析C++繼承
- 實驗四 類的組合、繼承、模板類、標準庫繼承
- 實驗4 類的組合、繼承、模板類、標準庫繼承
- 實驗四 類的組合,繼承,模板類,標準庫繼承
- 20200109 - 類的繼承繼承
- 原型繼承:子類原型繼承
- Python類的繼承Python繼承
- TypeScript 介面繼承類TypeScript繼承
- 派生類
- PHP 抽象類繼承抽象類時的注意點PHP 抽象類繼承抽象類時的注意點PHP抽象繼承
- 基類指標,子類指標,虛擬函式,override與final指標函式IDE
- C++派生類的拷貝構造C++
- JS基礎-完美掌握繼承知識點JS繼承
- c#中判斷類是否繼承於泛型基類C#繼承泛型
- c++ 類的函式引用 指標C++函式指標
- 【Python】python類的繼承Python繼承
- 類的繼承圖解繼承圖解
- 泛型類派生子類泛型
- Python學習手冊之類和繼承Python繼承