1樓:月無痕
虛擬函式與純虛擬函式 在他們的子類中都可以被重寫。它們的區別是:
(1)純虛擬函式只有定義,沒有實現;而虛擬函式既有定義,也有實現的**。
純虛擬函式一般沒有**實現部分,如
virtual void print() = 0;
而一般虛擬函式必須要有**的實現部分,否則會出現函式未定義的錯誤。
virtual void print()
(2)包含純虛擬函式的類不能定義其物件,而包含虛擬函式的則可以。
c++中 虛擬函式與純虛擬函式的區別是什麼?
2樓:月無痕
虛擬函式與純虛擬函式 在他們的子類中都可以被重寫。它們的區別是:
(1)純虛擬函式只有定義,沒有實現;而虛擬函式既有定義,也有實現的**。
純虛擬函式一般沒有**實現部分,如
virtual void print() = 0;
而一般虛擬函式必須要有**的實現部分,否則會出現函式未定義的錯誤。
virtual void print()
(2)包含純虛擬函式的類不能定義其物件,而包含虛擬函式的則可以。
c++ 虛擬函式和純虛擬函式的區別
3樓:周濤eric玄賧瞟
虛擬函式與純虛擬函式 在他們的子類中都可以被重寫。它們的區別是: (1)純虛擬函式只有定義,沒有實現;而虛擬函式既有定義,也有實現的**。
純虛擬函式一般沒有**實現部分,如 virtual void print() = 0; 而一般虛擬函式必須要有**的實現部分
c++虛擬函式和純虛擬函式的區別
4樓:小雨田大
定義一個函式為虛擬函式,不代表函式為不被實現的函式。
定義他為虛擬函式是為了允許用基類的指標來呼叫子類的這個函式。
定義一個函式為純虛擬函式,才代表函式沒有被實現。
參考
什麼是虛擬函式和純虛擬函式,有什麼區別
5樓:
虛擬函式是在基類中作總體框架定義,定義時在函式的返回型別名前加上virtual構成。它的具體不同實現版本是在其類的派生類裡實現的。純虛擬函式是在其類中連基本框架都定義不出來,所以只是用「virtual 型別名 函式名()=0;」的形式來宣告基類中有這麼一個函式,而它的實現則完全由基類的派生類根據不同需要來完成。
有純虛擬函式的基類叫抽象類,不能被例項化(即不能生成物件),只能被繼承。我的理解是:虛擬函式實現的具體版本中總是有通用的部分,這些通用部分可以在基類中定義,而純虛擬函式則完全沒有能共用的部分,完全是由派生類中不同的實現完成的。
供參考……
6樓:匿名使用者
自己看書吧,書上說的比誰都清楚。推薦一本, c++ primer plus...
c++虛擬函式與純虛擬函式在功能上的相同點與異同點
7樓:匿名使用者
子類中實現了,子子類就不用實現。。。子類沒實現的話,子子類就可能需要實現。。。反正沒有實現這個=0的函式的類是無法建立物件的。。。所以要例項化的類就要實現,***。。。
8樓:匿名使用者
首先要知道c++很重要的一個特點就是多型性。所以虛擬函式很重要的一點就是滿足c++執行時候的多型性。(還有就是編譯時候的多型性,函式過載來實現)
比如,你要求面積,求兩個東西的面積,然而只呼叫一個求面積的函式,這個時候就是要他的虛擬函式。(我感覺就是偷為了偷懶發明出來的,這樣可以少寫一些相同的**)
如果求面積這個函式,對於不同的物體求法完全不一樣,沒有一定共同點,那麼就定義一個純虛擬函式好了,具體的到具體的類裡面定義。
(ps:以上純個人簡潔,有錯可以指出,勿噴,謝謝)
C虛擬函式和純虛擬函式的區別,c中虛擬函式與純虛擬函式的區別是什麼?
虛擬函式與純虛擬函式 在他們的子類中都可以被重寫。它們的區別是 1 純虛擬函式只有定義,沒有實現 而虛擬函式既有定義,也有實現的 純虛擬函式一般沒有 實現部分,如 virtual void print 0 而一般虛擬函式必須要有 的實現部分 c 中 虛擬函式與純虛擬函式的區別是什麼?虛擬函式與純虛擬...
c中的虛擬函式是什麼,c中虛擬函式與純虛擬函式的區別是什麼?
c 中的虛擬函式是允許在派生類中重新定義與基類同名的函式,並且可以通過基類指標或引用來訪問基類和派生類中的同名函式。c 中的虛擬函式的作用主要是實現了多型的機制。關於多型,簡而言之就是用父型別別的指標指向其子類的例項,然後通過父類的指標呼叫實際子類的成員函式。這種技術可以讓父類的指標有 多種形態 這...
虛擬函式和虛基類的區別是什麼啊,c 中虛擬函式與純虛擬函式的區別是什麼?
虛擬函式 虛基類,它們都和virtual有關,這兩個帶有虛字的定義容易使人混淆,回下面先從作用答 上來解釋這兩個定義的區別 1.虛擬函式是用於多型中virtual修飾父類函式,確保父類指標呼叫子類物件時,執行子類函式的。2 虛基類是用來在多繼承中,如果父類繼承自同一個父類,就只例項化一個父類 說的有...