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

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