溫馨提示×

溫馨提示×

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

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

虛函數(shù)是什么意思

發(fā)布時間:2020-07-09 16:53:07 來源:億速云 閱讀:851 作者:Leah 欄目:編程語言

這篇文章運用簡單易懂的例子給大家介紹虛函數(shù)是什么意思,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

虛函數(shù)指的是被virtual關(guān)鍵字修飾的成員函數(shù),定義虛函數(shù)的目的是為了實現(xiàn)一個接口,起到一個規(guī)范的作用,規(guī)范繼承這個類的程序員必須要實現(xiàn)這個函數(shù)。

虛函數(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)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI