最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
亚东县| 沽源县| 武鸣县| 施甸县| 来安县| 龙里县| 铁岭县| 永丰县| 青田县| 桦甸市| 固安县| 深水埗区| 固原市| 靖州| 区。| 库车县| 德清县| 泰州市| 根河市| 海淀区| 秦安县| 汕尾市| 咸阳市| 华池县| 清远市| 延长县| 长阳| 富宁县| 阜新| 安龙县| 梁平县| 儋州市| 仙桃市| 贵溪市| 彩票| 远安县| 衢州市| 千阳县| 林芝县| 绥宁县| 蒙城县|