C++結構體與類的區別


結構體與類的異同:

相同之處:

  1. C++中的結構體中可以包含函數,也可以定義public、private、protected數據成員;定義了結構體之后,可以使用結構體名來創建對象,但是C中的結構體不允許含有函數;即

  2. 在C++中,結構體中可以有成員變量,成員函數,可從別的類繼承,也可以被別的類繼承,可以含有虛函數

     

不同之處:

  1. 結構體定義中默認情況下的成員是public,而類定義中的默認情況的成員是private的;

  2. 類中的非static成員函數有this指針(C++的結構體的非static成員函數也一樣具有this指針),類的關鍵字class能作為template模板的關鍵字,即template<class T> class A{};而結構體的struct不可以;

 

C的結構體與C++結構體的區別:

  1. C的結構體內不允許有函數存在,C++允許有內部成員函數,並且允許該函數是虛函數;所以C的結構體是沒有構造函數、析構函數和this指針的;

  2. C的結構體對內部成員變量的訪問權限只能是public,而C++允許public、protected和private三種;

  3. C語言的結構體是不可以繼承的,C++的結構體是可以從其他的結構體或者類繼承過來的;

以上是表面的區別,實質上的區別是面向過程面向對象編程思想的區別:C的結構體值時把數據變量給包裹起來了,並不涉及算法;而C++是把數據變量以及對這些數據變量的相關算法給封裝起來,並且給對這些數據和類不同的訪問權限;

 

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

默認權限區別:結構體->public 類->private

  1. C++結構體內部成員變量成員以及成員函數默認的訪問級別是public的,而C++類的內部成員變量以及成員函數的默認訪問級別是private的;

  2. C++結構體的繼承默認是public的,而C++類的繼承默認是private的


免責聲明!

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



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