C 中抽象類和虛基類用途上有什麼區別

2021-04-18 09:01:49 字數 3663 閱讀 6055

1樓:金色潛鳥

語法上有抽象類和虛基類,不等於你一定要用它。花裡胡哨的東西,我通常不用。

我能想到的抽象類用處,大概這個優點可以用一用:

含有純虛擬函式的類都是抽象類。基類中實際上並不使用這個函式,它只是通知編譯系統:

在這裡宣告一個虛擬函式,留待在派生類中定義。為一個類族提供一個公共介面。

例如,計算平面形狀的面積,抽象類 基類中 virtual float area( ) const =0;

派生類三角形,派生類圓 各自定義了 area( ) 具體的計算。一旦有了派生的三角形或圓,我們可以用同樣的函式名.area( ) 計算面積。

虛基類,它的構建要在派生類裡做,而且先於派生類自己的構建。當有派生類1,派生類2,生成的派生類12時,派生類12只執行一次虛基類的構建。虛基類的物件只有唯一一個。

至於它有什麼特殊用途,沒想到。

2樓:du小蝦

虛基類是相對於它的派生類而言的,它本身可以是一個普通的類。

只有它的派生類虛繼承它的時候,它才稱作虛基類,如果沒有虛繼承的話,就稱為基類。比如類b虛繼承於類a,那類a就稱作類b的虛基類,如果沒有虛繼承,那類b就只是類a的基類。

虛繼承主要用於一個類繼承多個類的情況,避免重複繼承同一個類兩次或多次。

例如 由類a派生類b和類c,類d又同時繼承類b和類c,這時候類d就要用虛繼承的方式避免重複繼承類a兩次。

而抽象類是指帶有有一個或一個以上的純虛擬函式的類。抽象類一般值用於繼承,不能定義類物件,但可以定義類指標和引用

c++中是否有虛類的說法,和純虛類和一般抽象類有什麼區別?

3樓:起個名子真挺難

是類似的。同一個概念。

純虛的不能直接例項化,只能被繼承後由子類例項化,以實現多型等。功能上也與介面類似。

在c++裡繼承虛基類和普通基類有什麼區別?

4樓:匿名使用者

class c

c++ 過載 覆蓋 隱藏的區別和執行方式

成員函式被過載的特徵

(1)相同的範圍(在同一個類中);

(2)函式名字相同;

(3)引數不同;

(4)virtual 關鍵字可有可無。

覆蓋是指派生類函式覆蓋基類函式,特徵是

(1)不同的範圍(分別位於派生類與基類);

(2)函式名字相同;

(3)引數相同;

(4)基類函式必須有virtual 關鍵字。

「隱藏」是指派生類的函式遮蔽了與其同名的基類函式,規則如下(1)如果派生類的函式與基類的函式同名,但是引數不同。此時,不論有無virtual關鍵字,基類的函式將被隱藏(注意別與過載混淆)。

(2)如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有virtual 關鍵字。此時,基類的函式被隱藏(注意別與覆蓋混淆)

3種情況怎麼執行:1。過載:看引數2。隱藏:用什麼就呼叫什麼3。覆蓋:呼叫派生類

5樓:匿名使用者

會輸出:class c

回答者: wanfustudio 回答的沒有錯,如果你想要把<<"class a"《也輸出來,採用構造方法才行,他會先建立父類的物件。

6樓:自由心魔

當某類的部分或全部直接基類是從另一個基類共同派生而來時,這直接基類中,從上一級基類繼承來的成員就擁有相同的名稱,派生類的物件的這些同名成員在記憶體中同時擁有多個拷貝,同一個函式名有多個對映。可以使用作用域分辨符來唯一標識並分別訪問它們。也可以將共同基類設定為虛基類,這時從不同的路徑繼承過來的同名資料成員在記憶體中只擁有一個拷貝,同一個函式名也只有一個對映。

也就是說虛基類解決了同名成員的唯一標識問題。

c++ 純虛類與虛基類的區別與聯絡?

7樓:匿名使用者

沒有純許抄類,只有純虛擬函式,襲也就是沒有實現的虛擬函式。

virtual void foo() = 0;這樣的,需要子類去實現

虛基類是,如果兩個類都把一個類a作為虛基類。如果類b同時繼承那兩個類的話,b中只會包含有一個a。否則如果a沒有作為虛基類被繼承,b中會包含兩個a。

8樓:匿名使用者

純虛類不能例項化,只能作為基類,一般是類中虛擬函式有=0,沒有實現體,而虛基類可能可以例項化,或者說虛基類包括了純虛類

9樓:匿名使用者

c++ 沒有 abstract 一說

只有 virtual 是關鍵字

虛基類與抽象類的問題

10樓:匿名使用者

當繼承關係自頂來至自

下出現菱形路線時,bai最底層的派生類必然du會重複繼承最頂zhi層基類的成dao員,所以定義虛基類是為了解決這種重複繼承的問題。抽象類是包含純虛擬函式的類,它不能定義物件,在類中定義虛擬函式是為了解決基類的指標能夠呼叫派生類的函式也就是所謂的「多型性」,讓一個命令實現多種響應。

11樓:匿名使用者

虛基類是相對bai於它的派生類du而言的,它本身可zhi以是一個普通的類dao。回

只有它的答派生類虛繼承它的時候,它才稱作虛基類,如果沒有虛繼承的話,就稱為基類。比如類b虛繼承於類a,那類a就稱作類b的虛基類,如果沒有虛繼承,那類b就只是類a的基類。

虛繼承主要用於一個類繼承多個類的情況,避免重複繼承同一個類兩次或多次。

例如 由類a派生類b和類c,類d又同時繼承類b和類c,這時候類d就要用虛繼承的方式避免重複繼承類a兩次。

而抽象類是指帶有有一個或一個以上的純虛擬函式的類。抽象類一般值用於繼承,不能定義類物件,但可以定義類指標和引用。

c++中虛擬函式,和抽象類到底是什麼意思

12樓:閱尊

虛擬函式來

在執行時具有多型性,若某源個基bai類函式宣告為虛函du數,那麼公有派生類將定義

zhi與基類虛擬函式原型相同dao的函式。(通俗說:基類函式加virtual成為虛擬函式後,在派生類裡將重新定義與基類虛擬函式原型相同的函式,當用基類指標或基類引用操作派生類物件時,系統將會呼叫派生類裡的同名函式!

)抽象類就是至少包含一個純虛擬函式(只宣告函式不具體定義功能,在派生類中定義功能)的類是抽象類,抽象類只作為基類派生新類。抽象類作用是更有效發揮多型特性!

參考教材及個人見解,純手打,僅供參考,滿意請採納一下吧!

13樓:物理公司的

c++中抽象類到底有什麼用處?

14樓:匿名使用者

提供了做蛋糕的模子和一套流程,至於做出來的蛋糕具體是什麼口味還得由你自己決定,但至少能保證你做出來的是蛋糕而不是麵包或者別的什麼,是共性與個性的統一!

15樓:手機使用者

抽象類就像是一個物種類一樣!

比如。抽象類就是鳥這個物種。

這個鳥是沒有這個動物的。

從這個鳥類裡面繼承出來了雞孔雀等。

然後虛擬函式就比方是特徵。比如雞的特徵就是不會飛。

你大概明白了吧

16樓:匿名使用者

便於重用,下次你用到抽象類中的小類別就可以不用重寫了

java 抽象類中可以定義哪些成員變數和函式

抽象類 和普通類最大區別在於 至少有一個未被實現的方法 其他沒有區別 子類公有的變數和函式都可以在抽象類中定義 1.如果一個類被定義抄為抽象類,且沒有包襲含任何抽象方法,也就是說該抽象類已經都實現了這些方法 那麼子類在繼承這個抽象類的時候不必重寫這些方法。2.相應的,如果一個類被定義為抽象類,包含抽...

c 中基類指標指向派生類時,呼叫的虛擬函式是派生類的,為什麼要這樣啊

直接用子類物件呼叫函式當然沒問題,基類指標指向派生類物件是多型性的體現。什麼是多型呢?多型就是不同物件接受相同的訊息,但是卻產生不同的行為,舉一個很簡單的例子,有一個圖形類,他有幾個派生類,如圓形,三角形,矩形。圖形類有一個函式area 用來求面積,但是由於不同圖形求面積的方法不同,要由具體的派生類...

程式設計思想到底是什麼,抽象類到底有什麼用途啊?

1 比如說,你想對mm說 我愛你!你可以用漢語說,也可以用英語說,也可以用德語說,這時候語言只是表達你思想的工具而已。程式設計也是這樣,碰到問題,首先想到的是建立一個解決問題的模型,而不是先想到for switch while。程式設計能力其中一個方面,就是會對問題進行抽象,建立一個解決問題的模型。...