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

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

Effective C++ 第三十九條 Use private inheritance judiciously.

2023-02-17 03:22 作者:九思519  | 我要投稿

明智而審慎地使用 private 繼承

先清楚 private 繼承的結(jié)果

derived 繼承 base 的所有內(nèi)容,并且為 private ,即使這些內(nèi)容原本是屬于 public 或者是 protected 的。這樣的結(jié)果就是,private 繼承繼承了 base 的實現(xiàn),卻沒有繼承接口。這意味著 is-implemented-in-terms-of ,這與上一章提到的復合(composition)相同,但是盡可能的要使用復合而不是 private 繼承。只有當涉及到 protected 成員或者 virtual 函數(shù)的時候才必須使用 private 繼承。

相當多的時候,使用 public繼承加復合 可以替代 private 繼承。比如 derived 需要繼承 base 的實現(xiàn),但是不希望這個接口暴露,那么 public 繼承顯然不在考慮范圍內(nèi)。采用 public 繼承加復合卻可以。

這樣做既使用了 base 的接口 fun,又不至于該接口暴露,而被任意使用。再者,可以防止 base 的函數(shù)被重新定義,一旦采用繼承,即使 derived 不能調(diào)用該函數(shù),也可以重新定義它。如果需要降低編譯耦合度,只需要前置聲明一下 base,使用 base 指針指向 _base 即可,不需要包含 base 的實現(xiàn)。

下面有一個極端的例子,適合使用 private 繼承,就是一個沒有成員變量也沒有 non-virtual 函數(shù)的空類

Int 比 int 占空間大的原因是,雖然 Empty 什么都沒有,但是它需要一個不為 0 的空間標識其獨特性,如果有多個類似的 Empty,都不占用空間的話,就無法標識誰是 Empty1,誰是 Empty2。在這里,Empty 是一個獨立的個體,大小不為0.若此時采用 private 繼承

這個時候二者大小就相等了,因為這里的 Empty 并非獨立,而是依附于 Int ,不是獨立屬性的對象,大小可以為 0.這種優(yōu)化叫做 EBO (empty base optimization)。

Effective C++ 第三十九條 Use private inheritance judiciously.的評論 (共 條)

分享到微博請遵守國家法律
岚皋县| 邹平县| 灵石县| 澜沧| 瑞昌市| 望都县| 英山县| 秦皇岛市| 河西区| 宁陵县| 耿马| 沁源县| 托克托县| 修武县| 从江县| 吉木乃县| 乌拉特中旗| 建昌县| 偃师市| 石棉县| 加查县| 广河县| 琼中| 馆陶县| 金山区| 岳普湖县| 屯门区| 庄浪县| 齐齐哈尔市| 苗栗县| 策勒县| 中超| 玛纳斯县| 晋城| 尼勒克县| 井陉县| 鹤庆县| 钟祥市| 和龙市| 酉阳| 舒城县|