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