4.3「隱藏」是指派生類的函式遮蔽了與其同名的基類函式,特徵是:
(1)如果派生類的函式與基類的函式同名,但是引數不同,此時,不論有無virtual關鍵字,基類的函式將被隱藏(注意別與過載混淆)。
(2)如果派生類的函式與基類的函式同名,但是引數相同,但是基類函式沒有virtual 關鍵字。此時,基類的函式被隱藏(注意別與覆蓋混淆)。
小結:說白了就是如果派生類和基類的函式名和引數都相同,屬於覆蓋,這是可以理解的吧,完全一樣當然要覆蓋了;如果只是函式名相同,引數並不相同,則屬於隱藏。
4.4 三種情況怎麼執行:
4.4.1 過載:看引數。
4.4.2 隱藏:用什麼就呼叫什麼。
4.4.3 覆蓋:呼叫派生類。
C 虛擬繼承
就是為了解決面相物件中繼承結構中可怕的菱形結構 下面是別人的,看看就懂了。從意義上來看,乙個sleepersofa沒有沙發和床兩種重量,如此的繼承不是真實的現實世界描述。進一步分析可得,床和沙發都是家具的一種,凡家具都有重量,所以通過分解來考察其關係,如圖17 2所示。圖17 2 床和沙發的分解 c...
C 虛擬繼承
就是為了解決面相物件中繼承結構中可怕的菱形結構 下面是別人的,看看就懂了。從意義上來看,乙個sleepersofa沒有沙發和床兩種重量,如此的繼承不是真實的現實世界描述。進一步分析可得,床和沙發都是家具的一種,凡家具都有重量,所以通過分解來考察其關係,如圖17 2所示。圖17 2 床和沙發的分解 c...
虛擬繼承C
c 中虛擬繼承的概念 為了解決從不同途徑繼承來的同名的資料成員在記憶體中有不同的拷貝造成資料不一致問題,將共同基類設定為虛基類。這時從不同的路徑繼承過來的同名資料成員在記憶體中就只有乙個拷貝,同乙個函式名也只有乙個對映。這樣不僅就解決了二義性問題,也節省了記憶體,避免了資料不一致的問題。class ...