您好,登錄后才能下訂單哦!
這篇文章運用簡單易懂的例子給大家介紹虛函數(shù)是什么意思,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
虛函數(shù)指的是被virtual關(guān)鍵字修飾的成員函數(shù),定義虛函數(shù)的目的是為了實現(xiàn)一個接口,起到一個規(guī)范的作用,規(guī)范繼承這個類的程序員必須要實現(xiàn)這個函數(shù)。
簡單地說,那些被virtual關(guān)鍵字修飾的成員函數(shù),就是虛函數(shù)。
首先:強調(diào)一個概念定義一個函數(shù)為虛函數(shù),不代表函數(shù)為不被實現(xiàn)的函數(shù)。定義它為虛函數(shù)是為了允許用基類的指針來調(diào)用子類的這個函數(shù)。定義一個函數(shù)為純虛函數(shù),才代表函數(shù)沒有被實現(xiàn)。定義純虛函數(shù)是為了實現(xiàn)一個接口,起到一個規(guī)范的作用,規(guī)范繼承這個類的程序員必須實現(xiàn)這個函數(shù)。
例:
class A { public: virtual void foo() { cout<<"A::foo() is called"<<endl; } }; class B:public A { public: void foo() { cout<<"B::foo() is called"<<endl; } }; int main(void) { A *a = new B(); a->foo(); // 在這里,a雖然是指向A的指針,但是被調(diào)用的函數(shù)(foo)卻是B的! return 0; }
這個例子是虛函數(shù)的一個典型應用,通過這個例子,也許你就對虛函數(shù)有了一些概念。它虛就虛在所謂“推遲聯(lián)編”或者“動態(tài)聯(lián)編”上,一個類函數(shù)的調(diào)用并不是在編譯時刻被確定的,而是在運行時刻被確定的。由于編寫代碼的時候并不能確定被調(diào)用的是基類的函數(shù)還是哪個派生類的函數(shù),所以被成為“虛”函數(shù)。 虛函數(shù)只能借助于指針或者引用來達到多態(tài)的效果。
關(guān)于虛函數(shù)是什么意思就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。