為什麼當成員函式被宣告為虛擬函式後,它的派生類中同名的函式都會自動生成為虛擬函式

2021-04-19 01:28:38 字數 2273 閱讀 1841

1樓:匿名使用者

龍生九copy子,各不相同

***************

因為基bai類函式宣告為虛擬函式後,編譯器會增加一du個虛擬函式表,建立一

zhi種對映關係,dao

就是每個類的物件都指向自己對應的那個函式,即使使用的是基類的指標, 通過該表可以查詢出來

同名,同引數,同返回值

2樓:沈龍七

因為繼承了唄。

你重寫override 即可、

c++使用虛擬函式的時候,子類也要使用virtual關鍵字嗎

3樓:pretty星空

c++規定,當一個成員函式被宣告為虛擬函式後,其派生類中的同名函式都自動成為虛擬函式。因此,在子類重新宣告該虛擬函式時,可以加,也可以不加,但習慣上每一層宣告函式時都加virtual,使程式更加清晰。

4樓:匿名使用者

不用的,隨你加不加,有virtual是可以被子類重寫的。

5樓:匿名使用者

不需要,那樣有點畫蛇添足。

6樓:白巫師

可以不用,c++並不強制在子類加virtual

7樓:暴君坎普

不用 當然為了方便** 還是寫上比較好

c++求助,哪個子類的虛擬函式的重新宣告是正

8樓:悽清的小白鼠

c++規定,當一個成員函式被宣告為虛擬函式後,其派生類中的同名函式都自動成為虛擬函式。因此,在子類重新宣告該虛擬函式時,可以加,也可以不加,但習慣上每一層宣告函式時都加virtual,使程式更加清晰。

什麼是c++虛擬函式,虛擬函式的作用和使用方法

9樓:何度千尋

在某基類中宣告為 virtual 並在一個或多個派生類中被重新定 義的成員函式,用法格式為:virtual 函式返回型別 函式名(參數列) ;實現多型性,通過指向派生類的基類指標或引用,訪問派生類中同名覆蓋成員函式。

虛擬函式定義:簡單地說,那些被virtual關鍵字修飾的成員函式,就是虛擬函式。虛擬函式的作用,用專業術語來解釋就是實現多型性(polymorphi**),多型性是將介面與實現進行分離;用形象的語言來解釋就是實現以共同的方法,但因個體差異,而採用不同的策略。

虛擬函式的作用:用同一個呼叫形式,既能呼叫派生類又能呼叫基類的同名函式。

虛擬函式的使用方法是:

在基類用virtual宣告成員函式為虛擬函式。

這樣就可以在派生類中重新定義此函式,為它賦予新的功能,並能方便地被呼叫。在類外定義虛擬函式時,不必再加virtual。

在派生類中重新定義此函式,要求函式名、函式型別、函式引數個數和型別全部與基類的虛擬函式相同,並根據派生類的需要重新定義函式體。

c++規定,當一個成員函式被宣告為虛擬函式後,其派生類中的同名函式都自動成為虛擬函式。因此在派生類重新宣告該虛擬函式時,可以加virtual,也可以不加,但習慣上一般在每一層宣告該函式時都加virtual,使程式更加清晰。如果在派生類中沒有對基類的虛擬函式重新定義,則派生類簡單地繼承其直接基類的虛擬函式。

定義一個指向基類物件的指標變數,並使它指向同一類族中需要呼叫該函式的物件。

通過該指標變數呼叫此虛擬函式,此時呼叫的就是指標變數指向的物件的同名函式。

通過虛擬函式與指向基類物件的指標變數的配合使用,就能方便地呼叫同一類族中不同類的同名函式,只要先用基類指標指向即可。如果指標不斷地指向同一類族中不同類的物件,就能不斷地呼叫這些物件中的同名函式。這就如同前面說的,不斷地告訴計程車司機要去的目的地,然後司機把你送到你要去的地方。

10樓:匿名使用者

當一個基類或虛基類派生了多個子類時,並且這些子類都重寫了基類的一個虛擬函式,那麼當你建立了多個子類物件時,可以把這些物件組成一個基類陣列,通過類基物件或基類物件指標可以呼叫同一個函式名而執行的是不同的子類的函式,這就是虛擬函式最根本的用途,這是一個後期繫結機制,在編譯前,物件的型別是不可知的。在編譯時才確定物件的型別,從而呼叫合適的函式。

class a

;class b : public a

;int main(int argc, char* argv)

基類中宣告瞭虛擬函式後,派生類中對應的函式也必須宣告為虛擬函式    沒有虛擬函式,一定不能實現動態繫結的

11樓:匿名使用者

前面那句錯了,派生類不必再宣告成虛擬函式了,只要基類宣告就可以

基類宣告虛擬函式後,會建一張虛擬函式表

C 中在基類裡宣告為const的純虛擬函式在派生類裡的同名函

必須,函式是否為const也是過載條件之一比如在一個類裡,存在重名函式 void print void print const 那麼是合法的過載 但是如果是 int print const int print 則不是合法過載 因此想要實體化circle類,必須實現一個形如double print c...

高一三角函式。。為什麼鈍角的三角函式值跟它的補角的三角函式

額。你話一個直角座標系,在話一個單位圓,圓心在座標點 0.0 然後自己話就好了 為什麼鈍角三角函式的所有的三角函式值的絕對值都等於它的補角的相應的三角函式值。如sin120 sin60 sin120 sin 180 60 sin180 cos60 cos180 sin60 0 1 sin60 sin...

函式的極限中為什麼有時會等於呢?有時又是它的倍數,它們有什麼關係

的特點是任意性,的特點是存在性。函式極限的核心是f x 和a的距離小於 回所以 必須是任意小。而答 是x的一個鄰域,規定了極限存在時x的取值範圍,所以只要找到有這樣一個 就可以了,不一定任意小。你的問題實際上是用定義證明或者求極限過程中 的取值問題,主要是為了證明或者求解方便。他們沒有任何關係,也沒...