數(shù)據(jù)抽象
? ? ? ? 結(jié)構(gòu)式編程不能解決復(fù)雜的問(wèn)題,對(duì)于數(shù)據(jù)類型來(lái)說(shuō),結(jié)構(gòu)化編程提供了一個(gè)類型管理器接口,目的是構(gòu)建內(nèi)置數(shù)據(jù)類型,與用戶的使用獨(dú)立開來(lái),但結(jié)構(gòu)化編程建立的struct結(jié)構(gòu)表示很大程度上依賴于內(nèi)部的表示,一旦用戶想要改變數(shù)據(jù)類型,就不得不探索內(nèi)部函數(shù)結(jié)構(gòu),無(wú)法實(shí)現(xiàn)完全的獨(dú)立。

圖片發(fā)自簡(jiǎn)書App
? ? ? C++允許用戶定義與內(nèi)置類型幾乎相同的數(shù)據(jù)類型,這樣的類型被稱為用戶定義類型或抽象類型,在具體類型中,用戶可以定義加減乘除操作,類似于int型和char型,可以定義rational型和complex型。在抽象類型中,將類型表示抽象化,相關(guān)的方法定義用虛函數(shù)進(jìn)行,每一個(gè)用戶定義的對(duì)象都有一個(gè)指針指向虛函數(shù)列表,當(dāng)調(diào)用相關(guān)抽象類型時(shí),直接將虛函數(shù)對(duì)應(yīng)到相應(yīng)虛函數(shù)列表的索引中,無(wú)需在意具體的數(shù)據(jù)類型。這樣的操作,將用戶和類型定義完全獨(dú)立開來(lái),產(chǎn)生的額外所需內(nèi)存空間為每個(gè)對(duì)象的虛函數(shù)列表指針和虛函數(shù)列表所占用的空間。