C 多型的一些理解

2021-07-03 04:33:25 字數 725 閱讀 4281

1. c++ 中的多型,簡單來說是用基類的指標指向子類的物件,然後用這個基類指標就可以呼叫子類物件的方法(這些方法在基類中有,且被宣告為虛函式);如果乙個方法沒有被宣告為虛函式,則呼叫哪個方法取決於指標的型別。

2. 這是自己寫的乙個例子

class a 

public:

virtual void say()

class b:public: a

public:

void say()

int main

a* a_ptr = new b();

a_ptr->say();------>b

a_ptr->a::say();    ------->a

b b;

b*  b_ptr = new b();

b_ptr->say();---->b

((a*)b_ptr)->say();   ----->b

((a*)(&b))->say();    ----->b

((a)b).say();    ------>a

總結:通過指向派生類的基類指標訪問函式,無論如何,只有a_ptr->a::say()能訪問到基類函式。

但是可以通過(a)b型別強制轉換,訪問基類的函式。

通過指標訪問函式時:

1>不加virtual ,訪問哪個取決於指標的型別

2>函式加了virtual ,訪問取決於指標所指向的物件的型別。

對多型的一些理解

相信許多小夥伴初次學習多型都是一臉懵逼,不知道在講什麼。在這裡我將把自己對多型的理解分享給大家。本人口述能力有限,在這裡用 來解釋多型 class person 這是乙個父類person,有乙個屬性name和乙個方法eat 再寫乙個子類student,如下 class student extends...

關於C 多型的一些概念和理解

概括 乙個介面,多種方法 程式在執行時才決定呼叫的函式 實現 通過虛函式實現,虛函式允許子類重新定義成員函式,而子類重新定義父類的做法成為遮蔽或重寫 重寫分為兩種,重寫成員函式和重寫虛函式,只有重寫虛函式才能體現c 的多型 而過載並沒有體現多型性 這裡簡單概括下過載 過載允許允許多個同名的函式,而這...

C 關於多型的一些總結

多型按字面的意思就是多種形態。當類之間存在層次結構,並且類之間是通過繼承關聯時,就會用到多型。c 多型意味著呼叫成員函式時,會根據呼叫函式的物件的型別來執行不同的函式。1 什麼是多型 2 多型有什麼用 3 多型的原理是什麼 4 如何實現多型 5 c 的純虛函式 2 多型是物件導向的重要技術之一,它是...