C C 類和結構體的差別

2021-07-04 04:53:30 字數 589 閱讀 2136

c/c++結構體的區別 

c中的結構體和c++中結構體的不同之處:在c中的結構體只能自定義資料型別,結構體中不允許有函式,而c++中的結構體可以加入成員函式。

c++中的結構體和類的異同:

一、相同之處:結構體中可以包含函式;也可以定義public、private、protected資料成員;定義了結構體之後,可以用結構體名來建立物件。但c中的結構體不允許有函式;

也就是說在c++當中,結構體中可以有成員變數,可以有成員函式,可以從別的類繼承,也可以被別的類繼承,可以有虛函式。

二、不同之處:結構體定義中預設情況下的成員是public,而類定義中的預設情況下的成員是private的。類中的非static成員函式有this指標,(而struct中沒有是錯誤的,一直被誤導啊,經過測試struct的成員函式一樣具有this指標),類的關鍵字class能作為template模板的關鍵字 即templateclass a{}; 而struct不可以。

實際上,c中的結構體只涉及到資料結構,而不涉及到演算法,也就是說在c中資料結構和演算法是分離的,而到c++中一類或者乙個結構體可以包含函式(這個函式在c++我們通常中稱為成員函式),c++中的結構體和類體現了資料結構和演算法的結合。

C C 類和結構體的區別

在c 中,結構體是一種特殊形態的類。類中的非static成員函式有this指標,類的關鍵字class能作為template模板的關鍵字 即template class a 而struct不可以。c 中,不使用結構體絲毫不會影響程式的表達能力。c 之所以要引入結構體,是為了保持和c程式的相容性。但有時...

C C 結構體和類中的記憶體對齊

在對結構體或者類進行 sizeof 的時候,其涉及到記憶體對齊的相關規則。了解記憶體對齊的規則,我們便可以通過指標去訪問類或結構體中的成員 對於我們理解結構體和類的記憶體布局以及指標的用法有極大好處 先來看乙個例子 typedef struct s a typedef struct s b size...

C C 結構體過渡到類

物件能提供服務 功能函式 建立物件,確定輸入 輸出引數,銷毀物件 建立物件 定義結構體 struct resultset 建立物件 resultset creat 銷毀物件 void destory resultset obj 避免外部隨意呼叫,破壞資料內部的完整性 使用函式介面會增加自由度 這一點...