C 程式設計規範之38 實施安全的覆蓋

2021-06-19 23:56:15 字數 473 閱讀 4306

摘要:

負責任地進行覆蓋:覆蓋乙個虛函式時,應該保持可替換性;說得更具體一點,就是要保持基類中函式的前後置條件。不要改變虛函式的預設引數。應該顯式地將覆蓋函式重新宣告為virtual.

雖然派生類通常會增加更多狀態,但他們所建模的是其基類的子集而非超集。在正確的繼承關係中,派生類所建模的是更一般的基礎概念的乙個特例。

定義乙個可能的失敗的派生覆蓋函式,只是在基類沒有宣告換做總是成功的時候,這個定義才是正確的。在覆蓋的時候,永遠不要修改預設引數。它們不是函式簽名的一部分,客戶**將因為不知情而將不同引數傳遞給函式,具體要傳遞給哪乙個引數,將取決於它們具有層次結構中那個節點的訪問許可權。

對於呼叫者而言,同乙個物件的成員函式會不加提示地根據自己訪問所使用的靜態型別而接受不同引數,這可能是一件非常令人奇怪的事情。在覆蓋函式時,應該新增冗餘的virtual.這能夠更清楚地想閱讀**的人表達自己的意圖。謹防不小心在基類中隱藏了過載函式。關於過載、覆蓋、隱藏的概念區分詳見:

C 深度解析 38 同名覆蓋引發的問題

1.父子間的賦值相容 子類物件可以當作父類物件使用 相容性 includeusing namespace std class parent void add int a,int b class child public parent int main 2.父類指標 引用 當使用父類指標 引用 指向子...

C 程式設計規範之11 隱藏資訊

摘要 不要洩密,不要公開提供抽象的實體的內部資訊。為了儘量減少操作抽象的呼叫 和抽象的實現之間的依賴性,必須隱藏實現內部的資料。否則,呼叫 就能夠訪問該資訊,或者更糟,操作該資訊,而原來應屬於內部的資訊就洩漏給了呼叫 所依賴的抽象。應該公開抽象,而不是資料。資訊隱藏主要從一下兩方面降低了專案的成為,...

c 類的程式設計規範

類是c 中必不可少的一部分,類是物件導向 oo 的基礎,是乙個非常強大的功能,也是c 中最容易被濫用的功能之一。類是應物件導向而誕生的,而過度並且無腦的物件導向,使程式大幅度的包裝,無謂的抽象,以及本身對類的使用不規範,導致了大量無謂低效的 誕生,本章講解的就是博主對類的使用的一點理解。1.明確類的...