c 基類指標,子類指標,多型

2021-09-11 04:49:31 字數 558 閱讀 2605

基類指標和子類指標之間的相互賦值

(1)將子類指標賦值給基類指標時,不需要進行強制型別轉換,c++編譯器將自動進行型別轉換。因為子類物件也是乙個基類物件。

(2)將基類指標賦值給子類指標時,需要進行強制型別轉換,c++編譯器將不自動進行型別轉換。因為基類物件不是乙個子類物件。子類物件的自增部分是基類不具有的。(強制轉換告訴編譯器為物件增加子類所特有的部分)

多型 最常見的用法就是宣告乙個基類的指標,利用該指標指向任意乙個子類物件,呼叫相應的虛函式,可以根據指向的子類的不同而實現不同的方法。如果沒有使用虛函式的話,即沒有利用c++多型性,則利用基類指標呼叫相應的函式的時候,將總被限制在基類函式本身,而無法呼叫到被重寫過的函式。

實用場景:

比如控制一輛小車運動,在基類中定義了乙個控制演算法,但制定控制策略時,會根據不同的情況確定不同的行走方案,所以會在基類中定義乙個虛函式contor1(),在各個子類中對虛函式control1進行不同實現以適應不同場景

例子

#include using namespace std;

class a

談談基類與子類的this指標(C )

引入定義乙個類的物件,首先系統已經給這個物件分配了空間,然後會呼叫建構函式 說明 假設存在建構函式 乙個類有多個物件,當程式中呼叫物件的某個函式時,有可能要訪問到這個物件的成員變數。而對於同乙個類的每乙個物件,都是共享同乙份類函式。物件有單獨的變數,但是沒有單獨的函式,所以當呼叫函式時,系統必須讓函...

繼承,基類指標指向子類物件

include include using namespace std class a a a class b public a b void update void print b b class c public a c void update void print c c class d pu...

C 中使用基類指標操作子類陣列的分析

基礎知識 陣列 在 c c 中,陣列是一塊連續的記憶體,記憶體中陣列元素緊密地排列在一起。記憶體的大小 元素個數 x 單個元素的大小。操作符 使用索引訪問資料中的元素。元素在記憶體中的位置為 陣列開始位置 索引 x單個元素的大小。類的例項 類的例項也占用記憶體。類佔記憶體的大小和類的資料成員有關,類...