C++中的virtual的含義作用
virtual ReturnType Function_1(); //虛函數聲明
virtual ReturnType Function_2() = 0; //純虛函數聲明
Virtual是C++ 面向對象機制中很重要的一個(gè)關(guān)鍵字。
只要是學(xué)過(guò)C++的人都知道在類(lèi)Base中加了Virtual關(guān)鍵字的函數就是虛擬函數
(例如函數print),于是在Base的派生類(lèi)Derived中就可以通過(guò)重寫(xiě)虛擬函數來(lái)實(shí)現對基類(lèi)
虛擬函數的覆蓋。當基類(lèi)Base的指針point指向派生類(lèi)Derived的對象時(shí),
對point的print函數的調用實(shí)際上是調用了Derived的print函數而不是Base的print函數。
這是面向對象中的多態(tài)性的體現。
純虛函數
1, 當在基類(lèi)中不能為虛函數給出一個(gè)有意義的實(shí)現時(shí),可以將其聲明為純虛函數,
其實(shí)現留待派生類(lèi)完成。
2, 純虛函數的作用是為派生類(lèi)提供一個(gè)一致的接口,它只是個(gè)函數的聲明而已,
它告訴編譯器,在這個(gè)類(lèi)中的這個(gè)純虛函數是沒(méi)有函數定義的,該類(lèi)不能創(chuàng )建對象
(即不能實(shí)例化),但可以聲明指針,該類(lèi)的派生類(lèi)負責給出這個(gè)虛函數的重載定義。
注意,面向對象程序設計的基本特征有:
1,封裝性:
封裝性是指將對象相關(guān)的信息和行為狀態(tài)捆綁成一個(gè)單元,即將對象封裝為一個(gè)具體的類(lèi)。
封裝隱藏了對象的具體實(shí)現,當要操縱
對象時(shí),只需調用其中的方法,而不用管方法的具體實(shí)現。
2,繼承性:
一個(gè)類(lèi)繼承另一個(gè)類(lèi),繼承者可以獲得被繼承類(lèi)的所有方法和屬性,并且可以根據實(shí)際的需要
添加新的方法或者對被繼承類(lèi)中的方法
進(jìn)行覆寫(xiě),被繼承者稱(chēng)為父類(lèi)或者超類(lèi),繼承者稱(chēng)為子類(lèi)或導出類(lèi),繼承提高了程序代碼的可
重用性,Java中一個(gè)子類(lèi)只能繼承一個(gè)
父類(lèi),Object類(lèi)是所有類(lèi)的最終父類(lèi)。
3,多態(tài)性:
多態(tài)性是指不同的對象對同一事物而做出的相同行為,一個(gè)類(lèi)A可以指向其自身類(lèi)和其導出類(lèi),
一個(gè)接口可以指向其接口實(shí)現類(lèi),在方
法參數中,使用多態(tài)可以提高參數的靈活性。
————————————————
原文鏈接:https://blog.csdn.net/zjuxsl/article/details/44136321
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。