《C++ Primer》7.2节练习
練習7.16:
在類的定義中,可以包含0個或者多個訪問說明符,并且對于某個訪問說明符能出現多少次以及能出現在哪里都沒有嚴格規定。每個訪問說明符指定接下來的成員的訪問級別,有效范圍直到出現下一個訪問說明符或者到達類的結尾為止。
一般來說,作為接口的一部分,構造函數和一部分成員函數應該定義在public說明符之后,而數據成員和作為實現部分的函數則應該跟在private說明符之后。
練習7.17:
類可以在它的第一個訪問說明符之前定義成員,對這種成員的訪問權限依賴于類定義的方式。如果使用struct關鍵字,則定義在第一個訪問說明符之前的成員是public的;相反,如果使用class關鍵字,則這些成員是private的。
練習7.18:
封裝是指保護類的成員不被隨意訪問的能力。通過把類的實現細節設置為private,我們就能完成類的封裝。封裝實現了類的接口和實現的分離。
封裝有兩個重要的優點:一是確保用戶代碼不會無意間破壞封裝對象的狀態;二是被封裝的類的具體實現細節可以隨時改變,而無須調整用戶級別的代碼。
一旦把數據成員定義成private的,類的作者就可以比較自由地修改數據了。當實現部分發生改變時,只需要檢查類的代碼本身以確認這次改變有什么影響;換句話說,只要類的接口不變,用戶代碼就無須改變。如果數據是public的,則所有使用了原來數據成員的代碼都可能失效,這時我們必須定位并重寫所有依賴于老版本實現的代碼,之后才能重新使用該程序。
把數據成員的訪問權限設成private還有另外一個好處,這么做能防止由于用戶的原因造成數據被破壞。如果我們發現有程序缺陷破壞了對象的狀態,則可以在有限的范圍內定位缺陷:因為只有實現部分的代碼可能產生這樣的錯誤。因此,將錯誤的搜索限制在有限范圍內將能極大地簡化更改問題及修正程序等工作。
練習7.19:
我們把數據成員strName和strAddress設置為private,這樣可以避免用戶程序不經意間修改和破壞它們;同時把構造函數和兩個獲取數據成員的接口函數設置為public,以便于我們在類的外部訪問。
總結
以上是生活随笔為你收集整理的《C++ Primer》7.2节练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 滴滴拉黑司机对方会知道吗
- 下一篇: 《C++ Primer》7.2.1节练习