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

2021-07-13 11:20:49 字數 1444 閱讀 4564

c結構體、c++結構體基本相同,c++類主要是方法的實現。

結構體是資料型別的集合

類是資料型別加方法的集合,基本如此,更注重方法。

1.c的結構體和c++結構體的區別

(1) c的結構體內不允許有函式存在,c++允許有內部成員函式,且允許該函式是虛函式。所以c的結構體是沒有建構函式、析構函式、和this指標的。

(2)c的結構體對內部成員變數的訪問許可權只能是public,而c++允許public,protected,private三種。

(3)c語言的結構體是不可以繼承的,c++的結構體是可以從其他的結構體或者類繼承過來的。

以上都是表面的區別,實際區別就是面向過程和物件導向程式設計思路的區別:

c的結構體只是把資料變數給包裹起來了,並不涉及演算法。

而c++是把資料變數及對這些資料變數的相關演算法給封裝起來,並且給對這些資料和類不同的訪問許可權。

c語言中是沒有類的概念的,但是c語言可以通過結構體內置立函式指標實現物件導向思想。

c與c++中定義結構體的不同方式:

結構也是一種資料型別, 可以使用結構變數, 因此, 象其它 型別的變數一樣, 在使用結構變數時要先對其定義。

定義結構變數的一般格式為:

struct 結構體名

變數名表列;

結構體名是結構的識別符號不是變數名。

另一種常用格式為:

typedef struct 結構體名

結構別名;

(1)在c中定義乙個結構體型別要用typedef:

typedef struct student

stu;

於是在宣告變數的時候就可:stu stu1;

如果沒有typedef就必須用struct student stu1來宣告;

這裡的stu實際上就是struct student的別名。

另外這裡也可以不寫student(於是也不能struct student stu1;了)

typedef struct

stu;

但在c++裡很簡單,直接

struct student

;於是就定義了結構體型別student,宣告變數時直接student stu2;

(2)在c++中如果用typedef的話,又會造成區別:

struct student

stu1;//stu1是乙個變數

typedef struct student2

stu2;//stu2是乙個結構體型別

使用時可以直接訪問stu1.a

但是stu2則必須先 stu2 s2;

然後 s2.a=10;

2.c++的結構體和c++類的區別

(1)c++結構體內部成員變數及成員函式預設的訪問級別是public,而c++類的內部成員變數及成員函式的預設訪問級別是private。

(2)c++結構體的繼承預設是public,而c++類的繼承預設是private。

C 結構體和類的區別

結構體和類的區別 在做乙個專案時,使用了較多的結構體,並且存在一些結構體的巢狀,即某結構體成員集合包含另乙個結構體等,總是出現一些奇怪的錯誤,才終於下決心好好分析一下到底類和結構體有啥不同,雖然它們很相似,但確實有很大的不同,用不好難免出的問題會比較多,現總結一下 一 結構體和類非常相似 1,定義和...

C 結構體和類的區別

c c 結構體的區別 c中的結構體和c 中結構體的不同之處 在c中的結構體只能自定義資料型別,結構體中不允許有函式,而c 中的結構體可以加入成員函式。c 中的結構體和類的異同 一 相同之處 結構體中可以包含函式 也可以定義public private protected資料成員 定義了結構體之後,可...

C 結構體和類的區別

結構體和類的區別 在做乙個專案時,使用了較多的結構體,並且存在一些結構體的巢狀,即某結構體成員集合包含另乙個結構體等,總是出現一些奇怪的錯誤,才終於下決心好好分析一下到底類和結構體有啥不同,雖然它們很相似,但確實有很大的不同,用不好難免出的問題會比較多,現總結一下 一 結構體和類非常相似 1,定義和...