C 中struct和class的區別

2021-10-01 07:03:54 字數 1031 閱讀 7934

c++中的struct繼承了c中的所有並且進行了擴充套件,則區別也就是c++中擴充套件的那部分,區別如下:

c++中可以擁有成員函式。

struct可以被繼承。

可以實現多型。

c下定義結構體變數需要加struct,而c++定義結構體變數時不需要加。gcc下分別用c和c++定義空結構體,sizeof() 後的結果分別為0 和 1,vs下c 要求乙個結構或聯合至少有乙個成員。乙個類能夠例項化,編譯器就需給它分配記憶體空間,來指示類物件的位址。這裡編譯器預設分配了乙個位元組(如:char),以便標記可能初始化的類物件,同時使空類占用的空間也最少(即1位元組)。

c下結構體內的變數訪問限定只能是public,c++下可以是public,protected,private。兩者最本質的區別就是訪問限制

struct作為資料結構的實現體,它預設的資料訪問控制是public的,而class作為物件的實現體,它預設的成員變數訪問控制是private的。

在進行繼承的時候struct預設繼承的成員是public的,class預設是private

上面我們提到過c++可以在struct裡面寫成員函式,這就代表著我們可以寫建構函式。當我們不寫構造的時候便可以在main方法中進行初始化。在class和struct中如果定義了建構函式則不可以進行初始化,如果沒有建構函式所有變數都是public的時候struct可以進行初始化,**如下:

struct a   

;int

main()

;//定義時直接賦值

}

我們可以發現在我們沒有寫建構函式的時候,struct可以在定義變數時進行賦值

C 中struct和class的差別

在c 中,struct和class除了預設訪問控制級別不一樣,其它別無二致,具體怎麼用,純屬於個人習慣。另 在stroustrup c 發明者 的原作中 他自己說的原句是 按照定義,乙個struct就是乙個類,而只是完全公開的類 所以 struct s 等價於class s public 也就是說,...

c 中struct和class的區別

有這麼幾點不同 1.struct 是值型別,class是物件型別 2.struct 不能被繼承,class可以被繼承 3.struct 預設的訪問許可權是public,而class預設的訪問許可權是private.4.struct不能由程式設計師申明建構函式,即使是預設 不帶引數 的建構函式,同樣也...

C 中 struct 和 class 的區別

從語法上,class和struct做型別定義時只有兩點區別 一 預設繼承許可權。如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理 二 成員的預設訪問許可權。class的成員預設是private許可權,struct預設是public許可權。...