五月天青色头像情侣网名,国产亚洲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ó)家法律
哈密市| 遂溪县| 田东县| 湛江市| 湘乡市| 凤城市| 白玉县| 容城县| 新巴尔虎左旗| 清水县| 连州市| 建湖县| 思茅市| 毕节市| 平利县| 宁德市| 丰原市| 郓城县| 利津县| 建昌县| 娄底市| 双柏县| 涪陵区| 射洪县| 若羌县| 黄浦区| 花莲县| 西峡县| 灵宝市| 永顺县| 上饶县| 仁寿县| 茂名市| 台中县| 新宁县| 临清市| 芦溪县| 邢台县| 博白县| 杭锦后旗| 兰坪|