五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Effective C++ 第二十三條 Prefer non-member non friend functions to me

2023-01-22 17:28 作者:九思519  | 我要投稿

寧以 non-member non-friend 函數(shù)替換 member 函數(shù)

下面有實(shí)例,三個(gè)對(duì)瀏覽器的操作

現(xiàn)在需要一個(gè)函數(shù)合并三個(gè)操作,有兩種選擇,一種是 member 另一種是 non-member non-friend

前面學(xué)過(guò),面向?qū)ο笫貏t要求數(shù)據(jù)應(yīng)該盡可能被封裝,如果使用 member 函數(shù) clearEverything 那么封裝度其實(shí)低于 non-member non-friend 函數(shù) clearBrowser。non-member non-friend 函數(shù)的編譯相聯(lián)度更低,越多的內(nèi)容被封裝,能被看見(jiàn)的東西就越少,我們就能夠越自由的改變內(nèi)容(由條款22可知)。member 函數(shù)可以使用 private 函數(shù)、enums、typedefs,但是 non-member non-friend 函數(shù)就不能,二者提供的功能相同,non-member non-friend 不會(huì)增加 class 內(nèi) private 成分的函數(shù)數(shù)量,所以 non-member non-friend 使得 WebBrowser 具有更好的封裝性。這點(diǎn)要區(qū)分清楚,non-member non-friend 而不是 non-member ,因?yàn)?friend 函數(shù)同 private 函數(shù)一樣可以調(diào)用 private 函數(shù)、enums、typedefs,不能增加封裝性。

使用 ?non-member non-friend 還有一個(gè)好處,可以降低編譯相依關(guān)系,比如本案例中三個(gè)函數(shù),我只需要使用其中一個(gè),但是 class 中的函數(shù)會(huì)整體定義,無(wú)法分割。non-member non-friend 可以按照如下方式分割:

可以按照 namespace 分離到三個(gè)文件,假如我只需要使用 cookie 的內(nèi)容,我就只需要包含file 1 和 file 2 頭文件,不需要包含 file 3. STL 標(biāo)準(zhǔn)庫(kù)就是如此,我不需要 list 我就不 #include <list>, 我需要 vector 我就 #include <vector> , 二者都在 std 空間下,可以做到分離使用。因此,class 的使用對(duì)于客戶來(lái)說(shuō)不可拓展,即使客戶能夠通過(guò)繼承來(lái)產(chǎn)生 Derived,但是無(wú)法訪問(wèn) Base 中被 private 修飾的成員,擴(kuò)展性就差了許多。

Effective C++ 第二十三條 Prefer non-member non friend functions to me的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
赣榆县| 平凉市| 阜新市| 乳源| 潼关县| 庆安县| 集贤县| 长汀县| 甘南县| 东光县| 依兰县| 隆化县| 镇江市| 怀来县| 扎兰屯市| 贵溪市| 固安县| 徐水县| 奉新县| 花垣县| 桂林市| 城口县| 兴义市| 盐源县| 祁连县| 福泉市| 滦平县| 平潭县| 玉龙| 巴楚县| 丘北县| 沁阳市| 海盐县| 马龙县| 新密市| 尚志市| 上虞市| 金山区| 随州市| 大石桥市| 健康|