C C 中同名覆蓋原則和賦值相容原則

2021-08-03 11:02:34 字數 560 閱讀 9261

同名覆蓋原則

派生類與基類中有相同成員時:

若未強行指名,則通過派生類物件使用的是派生類的同名成員;

如果要通過派生類的物件訪問基類被覆蓋的同名成員,需要加 物件名.基類名::同名成員 來限定

二義性解決方法:

一、用類名來限定

二、採用同名覆蓋原則

在多繼承時,基類與派生類之間,或基類之間出現同名成員時,將出現訪問時的二義性(不確定性)——採用虛函式或支配(同名覆蓋)原則來解決。

當派生類從多個基類派生,而這些基類又從同乙個基類派生,則在訪問此共同基類中的成員時,將產生二義性——採用虛基類來解決。

賦值相容原則

乙個公有派生類的物件在使用上可以被當作基類的物件,反之則禁止。

具體表現在:

派生類的物件可以被賦值給基類物件。

派生類的物件可以初始化基類的引用。

基類的物件指標也可以指向派生類。但是如果派生類的指標想要指向基類,則必須要將基類物件的位址強轉為派生類型別的。(原則是派生類資料成員預設比基類多一些,賦值或引用初始化給基類物件時,基類只讀取自己的那一部分,這只是我自己的理解)

C 繼承中的同名覆蓋

1,父子間的衝突是由繼承帶來的,兩個類之間存在了繼承的關係,必然的會帶來一 些問題,本文要討論的是父子之間成員變數或成員函式的命名問題 2,思考 1,子類中是否可以定義父類中的同名成員?1,可以,本文先程式設計解決這個問題 2,這個問題就是同名覆蓋問題 2,如果可以,如何區分?如果不可以,為什麼?3...

類中的同名函式關係,過載,覆蓋 重寫,隱藏

對於類中的同名函式,過載,覆蓋 重寫,隱藏 c 特性,不是類亦可以實現過載,與virtual無關聯。過載 同一類域抑或無類域,相同函式名,不同形參個數或型別 由形參決定呼叫哪個函式實現。同類域同名函式相同形參會引起編譯錯誤。virtual修飾函式需要相同的返回值與形參型別,多型特性則需要該修飾符才能...

PHP 類繼承 子類和父類同名方法會覆蓋

子類可以訪問父類的成員,繼承關鍵字extends,可以 的重用性,子類中寫了乙個與父類同名的方法,這個方法會覆蓋父類中的方法.1 重用性 2 擴充套件性 3 靈活性 類繼承 person.class.php class person public function say public functi...