• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Note of Justin

            關(guān)于工作和讀書的筆記

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              47 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks

            留言簿(14)

            搜索

            •  

            積分與排名

            • 積分 - 53109
            • 排名 - 433

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            [原創(chuàng)文章歡迎轉(zhuǎn)載,但請(qǐng)保留作者信息]
            Justin 于 2009-12-20



            大師寫到這一章節(jié)的時(shí)候文風(fēng)似有明顯轉(zhuǎn)變,原因未知,但我更喜歡這章的風(fēng)格。

            如題,Item22的主旨是應(yīng)該把所有類的數(shù)據(jù)成員聲明為私有(private)。因?yàn)?

            • 如果數(shù)據(jù)成員都是私有的,那么訪問(wèn)這些成員就只能通過(guò)函數(shù)進(jìn)行。于是用戶就不需要費(fèi)心考慮到底要用什么方式去訪問(wèn)數(shù)據(jù)成員:因?yàn)橹挥卸x了的函數(shù)可以用。
            • 通過(guò)定義數(shù)據(jù)成員為私有,可以實(shí)現(xiàn)函數(shù)來(lái)設(shè)計(jì)、約束或禁止對(duì)這些成員的各種訪問(wèn)(讀/寫等)。而如果將其設(shè)為公有(public),你將無(wú)法得知你的成員會(huì)被誰(shuí)改動(dòng),也不知道會(huì)是怎樣的改動(dòng)。
            • 而更重要的好處是封裝(encapsulation):可以方便的通過(guò)修改函數(shù)來(lái)改變成員的訪問(wèn)方式;在成員被訪問(wèn)時(shí)通知其他對(duì)象;實(shí)現(xiàn)多線程中的同步等等。
              封裝的好處究其本質(zhì),是通過(guò)對(duì)用戶隱藏?cái)?shù)據(jù)成員來(lái)保證類行為的一致性(class invariant)。因?yàn)榻涌诒怀蓡T訪問(wèn)函數(shù)限制了,類的作者也為自己日后修改類的實(shí)現(xiàn)留了后路:如果所有的成員都是公有的,對(duì)任何代碼的修改都有可能影響到外界的使用。(因此Scott說(shuō)“Public means unencapsulated, and practically speaking, unencapsulated means unchangeable, especially for classes that are widely used.”)

            那么可不可以聲明為保護(hù)(protected)呢?其實(shí)道理和前面的公有是一樣的。公有的成員對(duì)類的外部完全開(kāi)放,而保護(hù)的成員對(duì)類的繼承者完全開(kāi)放。這個(gè)就像兩個(gè)區(qū)間:(-infinity, +infinity) 和 (0, +infinity),兩者的大小是一樣的。

            接下來(lái)大師的一句話有擊中要害:從分裝的角度,只有兩種訪問(wèn)級(jí)別:私有,及其他。

            posted on 2010-01-08 08:03 Justin.H 閱讀(1384) 評(píng)論(-1)  編輯 收藏 引用 所屬分類: Effective C++ 炒冷飯

            Feedback

            # re: Effective C++ 炒冷飯 - Item22 請(qǐng)把數(shù)據(jù)成員聲明為私有 2010-01-08 17:13 太垃圾了
            你天天寫這東西累不?有什么用,真是無(wú)語(yǔ)~~順便問(wèn)一句“炒冷飯”啥意思,真  回復(fù)  更多評(píng)論
              

            # re: Effective C++ 炒冷飯 - Item22 請(qǐng)把數(shù)據(jù)成員聲明為私有 2010-01-08 21:46 Justin.H
            以前學(xué)過(guò)的東西,重新復(fù)習(xí)。炒冷飯的意思大概就是這樣。
            為什么要寫這些在第一篇日志和標(biāo)題里應(yīng)該也說(shuō)清楚了的,不累,真D
            至于有沒(méi)有用嘛,仁者見(jiàn)仁智者見(jiàn)智了,呵呵  回復(fù)  更多評(píng)論
              

            # re: Effective C++ 炒冷飯 - Item22 請(qǐng)把數(shù)據(jù)成員聲明為私有 2010-01-09 12:46 匿名
            支持樓主,我都看了,呵呵,懶得看書。  回復(fù)  更多評(píng)論
              

            # re: Effective C++ 炒冷飯 - Item22 請(qǐng)把數(shù)據(jù)成員聲明為私有 2010-01-20 10:08 Goteet
            那個(gè)復(fù)習(xí)吧,不過(guò)能不能別申請(qǐng)公布在主頁(yè)上,我們也可以通過(guò)最新隨筆找到的。  回復(fù)  更多評(píng)論
              

            # re: Effective C++ 炒冷飯 - Item22 請(qǐng)把數(shù)據(jù)成員聲明為私有 2010-01-20 11:32 Justin.H
            @Goteet
            謝謝提醒~
            之前有同志建議我放在主頁(yè)上,于是我就試著放在這里了。
            后面的筆記我會(huì)發(fā)布在別處的,呵呵。  回復(fù)  更多評(píng)論
              

            亚洲国产成人久久综合碰碰动漫3d| 久久五月精品中文字幕| 久久国产精品一国产精品金尊| 国产精品久久久久…| 久久久久国产精品嫩草影院| 久久人人爽人人爽人人片av高请 | 久久免费线看线看| 日韩久久无码免费毛片软件| 国产精品禁18久久久夂久| 久久涩综合| 2020最新久久久视精品爱| 亚洲中文字幕无码久久精品1| 99久久精品免费看国产免费| 中文字幕人妻色偷偷久久| 99久久精品国产毛片| 97久久香蕉国产线看观看| 久久丫忘忧草产品| 午夜福利91久久福利| 狠狠精品久久久无码中文字幕| 久久人人爽人人爽人人AV| 午夜精品久久久久久| 久久精品国产99久久香蕉| 久久精品视频网| 精品久久久久久国产91| 狠狠88综合久久久久综合网| 99久久精品免费看国产一区二区三区| 久久高清一级毛片| 国产L精品国产亚洲区久久| 狠狠色丁香久久综合婷婷| 91精品国产高清91久久久久久| 东京热TOKYO综合久久精品| 五月丁香综合激情六月久久| 亚洲国产美女精品久久久久∴| 久久久久高潮综合影院| 久久久久se色偷偷亚洲精品av| 久久青青草视频| 久久妇女高潮几次MBA| 久久天天躁狠狠躁夜夜avapp| 狼狼综合久久久久综合网| 欧美午夜精品久久久久免费视| 香蕉久久夜色精品升级完成|