91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++基礎多態有哪些

發布時間:2021-11-29 15:32:56 來源:億速云 閱讀:159 作者:iii 欄目:大數據

本篇內容主要講解“C++基礎多態有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C++基礎多態有哪些”吧!

C++按照實現的時機分為編譯時多態和運行時多態
1.編譯時多態也成為靜態連編,是指程序在編譯的時候就確定了多態性,通過重載機制實現
2運行時多態又稱為動態聯編,是指必須在運行中才能確定的多態性,通過繼承和虛函數實現
##虛函數
若派生類中定義了于基類相同的函數,使用基類指針指向派生類對象時,通過指針調用的是基類函數而不是派生類中的函數。

class Animal{public:   void speak()   {     cout<<"animal speak"<<endl;   }};class Dog:public Animal{public:    void speak(){        cout<<"dog speak"<<endl;    }};int main() {    Dog dog;    Animal *animal = &dog;    animal->speak();    return 0;}

?? animal->speak()會調用的是基類的speak函數,而不會調用Dog類的派生同名函數。編譯器的做法不是我們期望的,根據實際的對象類型來判斷重寫函數的調用,如果父類指針指向的是父類對象則調用父類中定義的函數,如果父類指針指向的是子類對象則調用子類中定義的重寫函數。
??那些被virtual關鍵字修飾的成員函數就是虛函數。虛函數的作用,用專業術語來解釋就是實現多態性(Polymorphism),多態性是將接口與實現進行分離;用形象的語言來解釋就是實現以共同的方法,但因個體差異而采用不同的策略。同樣的調用語句有多種不同的表現形態。
虛函數聲明如下:
C++中通過virtual關鍵字對多態進行支持
使用virtual聲明的函數被重寫后即可展現多態特性

virtual ReturnType FunctionName(Parameter);

虛函數必須實現,如果不實現,編譯器將報錯,錯誤提示為

error LNK****: unresolved external symbol "public: virtual void __thiscallClassName::virtualFunctionName(void)"

##純虛函數
??在很多情況下, 基類本身生成對象是不合情理的。例如,動物作為一個基類可以派生出老虎、孔雀等子類,但動物本身生成對象明顯不合常理。為了解決這個問題,方便使用類的多態性,引入了純虛函數的概念。 純虛函數是在基類中聲明的虛函數,它在基類中沒有定義,但要求任何派生類都要定義自己的實現方法。在基類中實現純虛函數的方法是在函數原型后加“=0”
純虛函數聲明如下:

抽象類

??一個包含純虛擬函數的類稱為抽象類。 抽象類是不能定義對象的。同時抽象類只能作為基類來使用,其純虛函數的實現由派生類給出。如果派生類中沒有重新定義純虛函數,而只是繼承基類的純虛函數,則這個派生類仍然還是一個抽象類。如果派生類中給出了基類純虛函數的實現,則該派生類就不再是抽象類了,它是一個可以建立對象的具體的類。

到此,相信大家對“C++基礎多態有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

乌拉特中旗| 仁寿县| 潮州市| 乌兰察布市| 邛崃市| 阳西县| 长沙市| 大余县| 扎兰屯市| 曲阳县| 临沧市| 沂水县| 寿阳县| 德庆县| 海兴县| 富顺县| 安多县| 阳曲县| 额济纳旗| 宁远县| 吉隆县| 松溪县| 鄢陵县| 股票| 丹东市| 济南市| 吉安县| 新余市| 英山县| 台州市| 句容市| 穆棱市| 三河市| 凤山县| 兰溪市| 塘沽区| 宾阳县| 尚志市| 罗江县| 高碑店市| 射洪县|