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