c中類的成員函式重定義和虛擬函式有什麼區別

2021-03-03 21:04:09 字數 1095 閱讀 6726

1樓:皇家救星

虛擬函式可以實現多型,過載不行

多型就是用同一個呼叫方式實現不同呼叫

比如,你定義了一個名為形狀的父類,裡面有一個計算面積的虛擬函式。並且派生了兩個子類,一個是圓,一個是方形,各自實現了自己的計算面積函式

這樣,你想要計算面積的時候,並不需要考慮圓和方形的區別。只需要 父類.計算面積 這樣呼叫,編譯系統會自動幫你選擇用圓的計算面積,或是用方形的計算面積

2樓:匿名使用者

這都是在繼

承的類中用到的。

在繼承的類中有函式定義和父類中的函式定義重複,就是override,過載

在把一個子類的物件定義給父類的變數的時候,對於同一個函式名的函式,c++將應用那個父類的函式定義。

如果父類的這個函式被定義為virtual,將會呼叫子類的。

class a

};class b : public a

返回this is a.

如果class a

};返回this is b.

c++中 虛擬函式與純虛擬函式的區別是什麼?

3樓:月無痕

虛擬函式與純虛擬函式 在他們的子類中都可以被重寫。它們的區別是:

(1)純虛擬函式只有定義,沒有實現;而虛擬函式既有定義,也有實現的**。

純虛擬函式一般沒有**實現部分,如

virtual void print() = 0;

而一般虛擬函式必須要有**的實現部分,否則會出現函式未定義的錯誤。

virtual void print()

(2)包含純虛擬函式的類不能定義其物件,而包含虛擬函式的則可以。

c++中虛擬函式必須有定義嗎?

4樓:呵呵

需要例項化類的虛擬函式必須有定義,而僅僅定義帶有虛擬函式的類且虛擬函式沒有實現,該類編譯是可以通過的!

純虛擬函式出現在介面類中,並賦值為0,不要為該函式分配函式地址,從而阻止類的例項化!純虛擬函式是沒有定義的,如果實現了也不是純虛擬函式啦!

一般的成員函式可以只有宣告,前提是在應用中不能呼叫該函式,否則會因找不到定義產生連線錯誤!

請問C 中成員函式在類裡面定義和在類外定義有什麼區別

效能來說沒啥區別。不過放在類外,的定義和實現分開,有利於 封轉,別人需要呼叫你的介面的時候,你可以只給他標頭檔案,的實現自己留著。在類裡定義時,這種函式會被編譯器編譯成行內函數,在類外定義的函式則不會。行內函數的好處是加快程式的執行速度,缺點是會增加程式的尺寸。比較推薦的寫法是把一個經常要用的而且實...

C虛擬函式和純虛擬函式的區別,c中虛擬函式與純虛擬函式的區別是什麼?

虛擬函式與純虛擬函式 在他們的子類中都可以被重寫。它們的區別是 1 純虛擬函式只有定義,沒有實現 而虛擬函式既有定義,也有實現的 純虛擬函式一般沒有 實現部分,如 virtual void print 0 而一般虛擬函式必須要有 的實現部分 c 中 虛擬函式與純虛擬函式的區別是什麼?虛擬函式與純虛擬...

虛擬函式和虛基類的區別是什麼啊,c 中虛擬函式與純虛擬函式的區別是什麼?

虛擬函式 虛基類,它們都和virtual有關,這兩個帶有虛字的定義容易使人混淆,回下面先從作用答 上來解釋這兩個定義的區別 1.虛擬函式是用於多型中virtual修飾父類函式,確保父類指標呼叫子類物件時,執行子類函式的。2 虛基類是用來在多繼承中,如果父類繼承自同一個父類,就只例項化一個父類 說的有...