關於class與structure使用的一些總結
struct 由c語言引入。在c語言中,是定義結構化資料的標準選擇。
c++ 同時支援struct 和 class. 原因之一是c++ 是 c 的超集,涵蓋c 已支援的語言要素,將更好的支援向下相容(原來能夠工作的c 源程式移植到c++,可以支付極少甚至0代價)
實際上,c++ 的class已經對struct 進行了完全的覆蓋,即是說,原來用struct 實現的結構體,完全可以用class 代替。
那麼問題出來了,一個新專案, 什麼時候應該使用struct, 同樣的東西,用struct實現或者用class實現,效能上有沒有區別。
struct 和 class 實際在C++ 中沒有什麼區別。
struct 仍然可以繼承自另一個struct (很少看到有人這麼幹)。
struct 預設的欄位型別是public, 預設的繼承方式也是public, 而class 的預設欄位型別是private, 預設繼承方式也是private。
未見任何文件有描述說struct 比 class 更快。個人感覺既然struct 和 class 在實現上可以互換,也就是說要支援相同的語言級基礎設施和複雜度,那麼就不應該存在用哪個更快的問題(同等級別物件, 你不能拿一個有4個欄位的Rect 結構體 和一個帶Hashtable 的ResManager相比)
由於struct 和 class 的可替換性,什麼時候用struct 和什麼時候用class的選擇就相當主觀了。通常大家的直覺是一致的: struct 應該應用於POD(Plain old data)型別的物件. 用一個詞來描述,他們更像是記錄, 一個簡單的集合,裡面有幾個欄位, 例如 struct Color, struct Rect, struct Point 等都是我們常見的結構。
而class 實際上更適合用於抽象主動的物件, 他們通常可以有複雜的繼承關係(個人認為太複雜是一種作死的行為,稍後解釋)。 或許有更多的方法和邏輯。對於class來講,內部資料除了理解為記錄, 更有一部分是“狀態”。
From:https://www.cnblogs.com/BearOcean/p/4298187.html