在C裡繼承虛基類和普通基類有什麼區別

2021-03-06 22:44:38 字數 1293 閱讀 3620

1樓:匿名使用者

class c

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

成員函式被過載的特徵

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

(2)函式名字相同;

(3)引數不同;

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

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

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

(2)函式名字相同;

(3)引數相同;

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

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

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

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

2樓:匿名使用者

會輸出:class c

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

3樓:自由心魔

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

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

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

4樓:匿名使用者

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

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

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

5樓:匿名使用者

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

6樓:匿名使用者

c++ 沒有 abstract 一說

只有 virtual 是關鍵字

虛基類與抽象類的問題,純虛類 和抽象類 有什麼關係

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

C類的公有繼承,基類的私有成員在派生類中不可見或不可訪問,這個不可見或不可訪問是什麼意思

外部成員無法訪問內部私有成員。從物理上講是複製過來了,在記憶體中確實有複製。但是從程式上看是被遮蔽了,不能直接呼叫。簡單的表達一下,父母跟子女。基類就是父母,子女就是派生類。基類的私有成員就好比是父母的私房錢,子女能夠繼承父母的樣貌 即公有成員 但是子女沒法使用父母的私房錢也不能知道有多少私房錢 即...

虛擬函式與過載函式的區別與聯絡,C 多型性。 基類的虛擬函式和過載函式的區別,是不是一個是在執行時發生,一個是在編譯時發生?

abstract 抽象方法 virtual 虛方法 過載函式就是override的方法 比如 父類a.m 子類b.m 1 abstract的方法,父類可以不實現,讓子類去重寫 重寫 overwrite,不過一般不會提到 父類如果存在abstract方法,那麼必然是抽象類,必然不能直接例項化 比如 a...