日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > CPP開(kāi)發(fā)者
[導(dǎo)讀]↓推薦關(guān)注↓如圖是真實(shí)世界實(shí)踐中C項(xiàng)目protected繼承和private繼承的情況:其中public繼承總的平均下來(lái)幾乎占99.9%,而protected繼承幾乎沒(méi)有。private繼承還能占極小部分,但也完全可以用public繼承復(fù)合取代。實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),現(xiàn)實(shí)世界...



如圖是真實(shí)世界實(shí)踐中C 項(xiàng)目protected繼承和private繼承的情況:


其中public繼承總的平均下來(lái)幾乎占99.9%,而protected繼承幾乎沒(méi)有。private繼承還能占極小部分,但也完全可以用public繼承 復(fù)合取代。


實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),現(xiàn)實(shí)世界中的這些項(xiàng)目情況是否能說(shuō)明protected繼承和private繼承是沒(méi)用的廢物?是只會(huì)出現(xiàn)在語(yǔ)法理論和教科書中的垃圾嗎?


〇、引言

既然你所統(tǒng)計(jì)的項(xiàng)目里出現(xiàn)了 private 繼承和 protected 繼承,這不正說(shuō)明確實(shí)有他們的用武之地嗎?


一、現(xiàn)有項(xiàng)目分析(以 STL 的三大實(shí)現(xiàn)為例)

讓我們來(lái)康康 C 代碼的標(biāo)桿——STL 的源碼,是怎么做的:


先來(lái)康 GCC 自帶的 libstdc 的實(shí)現(xiàn):


vector:


list:


deque:


forward_list:


unordered_(multi)set/map 的底層 Hashtable:


tuple 雖然是直接繼承自 Tuple_impl:


但 Tuple_impl 是用到了 private 繼承展開(kāi)各個(gè)字段的:


pair:


mutex:


functional:


bitset:


再來(lái)康 Clang 自帶的實(shí)現(xiàn),libc 的:vector:


list:


string:


tuple 底層用于空基類壓縮優(yōu)化的:


其他的類似,我就不繼續(xù)展開(kāi)了,否則你這月流量不夠了


最后康 MSVC 的:MSVC STL 雖然幾個(gè)容器模板沒(méi)有用到繼承,但至少 tuple 和 varient 還是挺給我面子的:


tuple:


varient:



看吧,protected private 繼承用的多普遍,更多的我還沒(méi)列舉完~


二、protected private 繼承的實(shí)際運(yùn)用場(chǎng)景考察

1)很多人說(shuō)你用 protected private 繼承倒不如用組合,把原本的基類作為一個(gè)私有或保護(hù)字段。這種論調(diào)是很沒(méi)有道理的。很多時(shí)候,繼承是替代不了的。比如 C 里有一種非常常見(jiàn)的優(yōu)化技術(shù)叫:


空基類壓縮優(yōu)化技術(shù)


他就只能用繼承去實(shí)現(xiàn);而使用組合時(shí),就沒(méi)有壓縮的效果。


考察下面代碼,這是對(duì) vector 壓縮 allocator 字段原理的簡(jiǎn)化實(shí)現(xiàn):


class MyAllocator
{

};

template <typename T, typename Allocator = MyAllocator>
class MyVector: public Allocator
{
};

void use_allocator(const MyAllocator 
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉