C++中結構體和類的區別


在C++中,結構體是一種特殊形態的類。

結構體和類的唯一區別就是:  結構體和類具有不同的默認訪問控制屬性。

  類中,對於未指定訪問控制屬性的成員,其訪問控制屬性為私有類型(private)

  結構體中,對於未指定任何訪問控制屬性的成員,其訪問控制屬性為公有類型(public)

C++中,不使用結構體絲毫不會影響程序的表達能力。C++之所以要引入結構體,是為了保持和C程序的兼容性。

但有時仍會在C++中使用結構體,是因為,可以使用結構體將不同類型數據組成整體,方便於保存數據。(若用類來保存,因類中成員默認為私有,還要為每個數據成員特定函數來讀取和改寫各個屬性,比較麻煩。)

 

C語言中結構體不允許定義函數成員,且沒有訪問控制屬性的概念。

C++為C語言中的結構體引入了成員函數、訪問控制權限、繼承、包含多態等面向對象特性。

C++在struct之外引入了class關鍵字,但為了保持與C程序的兼容,C++保留了struct關鍵字,並規定結構體默認訪問控制權限為公有類型。

另外,C語言中,空結構體的大小為0,而C++中空結構體(屬於空類)的大小為1。

C++中空類的大小為1的原因:

  空類也可以實例化,類實例化出的每個對象都需要有不同的內存地址,為使每個對象在內存中的地址不同,所以在類中會加入一個隱含的字節。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM