C 中的派生與覆蓋

2021-06-26 09:56:33 字數 777 閱讀 5152

本文系學習21天學能c++中的一些記錄

派生類可以覆蓋基類函式,這意味著在派生類中修改其實現。在派生類中建立乙個返回值和特徵標與基類成員函式相同但實現不同的函式時,被稱為覆蓋該函式。

覆蓋函式時,特徵標必須與基類中被覆蓋的函式相同,特徵標指的是函式原型中除返回型別外的內容,即函式名,引數列表和可能用到的關鍵字const。

注意、過載和覆蓋,這兩個術語類似,功能也差不多,過載方法時,建立多個名稱相同但特徵標不同的方法;覆蓋方法時,在派生類中建立乙個名稱和特徵標都與基類方法相同的方法(方法意為可以操作成員資料的成員函式)。

覆蓋可以會產生一些意想不到的問題,若基類過載了多個函式,乙個不接受引數,乙個接受乙個char引數,乙個接受乙個int和char引數,但派生類只覆蓋了不接受引數的函式,這樣的話我們就不能通過派生類的物件訪問基類的另外兩個接受引數的同名函式,若要求能訪問這兩個函式的話必須將這兩個函式一併覆蓋才行。

規則是:覆蓋任乙個過載方法後,該方法的其它所有版本都將被隱藏,如果不希望它們被隱藏,必須對其進行覆蓋。

覆蓋基類方法後,仍可以通過限定方法名來呼叫它-----在方法名前加上基類名和網域名稱符:  baseclass:: method()     如:fido.mammal::move (10); 這是顯示地呼叫mammal的方法。

應該:應通過派生類來擴充套件經過測試的類的功能;

通過覆蓋基類方法來改變派生類中某些函式的行為;

不應該:

不要通過修改函式特徵標來隱藏基類函式;

不要忘記const是特徵標的組成部分;

別忘記返回型別不是特徵標的組成部分;

C 的繼承與派生

繼承和派生是物件導向程式設計的兩個重要的特性,繼承是從已有的類那裡得到已有的特性,已有的類為基類或父類,新類為派生類或子類。他們是從不同的角度說明類之間的關係,這種關係包含了訪問機制 多型和過載等。1 繼承 解釋 它是用已有的資料型別建立新的資料型別,並保留已有資料型別的特點。1 類的繼承 繼承方式...

C 中的覆蓋 過載與隱藏

c 中類本身之間的函式關係與基類和子類之間的函式關係有 覆蓋 過載與隱藏。1 覆蓋 c 中在基類用virtual定義的函式在子類中重新定義,此時稱為覆蓋,即子類對父類函式的覆蓋。2 過載 同乙個類中定義了多個同名但其形參不同的函式,這些同名函式之間為過載。3 隱藏 函式的隱藏有兩種情況。第一,如果派...

C 繼承與派生(公有派生和私有派生)的概念

層次概念是計算機的重要概念。通過繼承 inheritance 的機制可對類 class 分層,提供型別 子型別的關係。c 通過類派生 class derivation 機制來支援繼承。被繼承的型別稱為基類 base class 或超類 superclass 新產生的類為派生類 derived cla...