1. 雖然長的一樣,但是本質上型別不同:c語言中:struct是使用者自定義資料型別(udt);c++中struct是抽象資料型別(adt),所以下面**:
struct he
;
在c裡面實際上資料型別為 (struct he),所以定義乙個結構he變數都要 帶上struct.
struct
he a;
//c語言 變數方式
而在c++裡面實際上資料型別為he(主要是因為結構體被當成類對待了),所以定義變數不需要 struct.
he a;
//c++語言 變數
由於c++中的struct是抽象資料型別,所以可以繼承也可以實現多型,只是因為有了class 一般不用它。
2. c++語言將struct當成類來處理的,所以c++的struct可以包含c++類的所有東西,例如建構函式,析構函式,友元等,c++的struct和c++ class 唯一不同就是struct成員預設的是public, c++預設private。
這裡不要記混了,c++中的struct為了和c語言相容,所以預設也是public 的。
而c語言struct不是類,不可以有函式,也不能使用類的特徵例如public等關鍵字 ,也不可以有static關鍵字,說到底它只是一些變數的集合體,可以封裝資料卻不可以隱藏資料。
【總結】
struct
c語言c++
成員沒有函式成員,只有資料
函式和資料都可以有
訪問許可權
沒有訪問許可權的設定,及對外不隱藏資料
有訪問許可權的設定private,public,protected
是否可以繼承
不可以有繼承關係
【補充】
在c裡面,你可以
struct s s_instance;
也可以 這樣:
typedef struct s;
s s_instance;
注意:前者struct s {} 是乙個型別,中間的s是乙個tag,所以只能用1次。
後者typedef把struct {} 定義為型別s,所以s可以多用。
基礎的東西不用就忘記了....
C 語言和C 語言的 struct對比
c 語言和c 語言的 struct對比 author stonehat 1.c 語言將struct當成類來處理的,所以c 的struct可以包含c 類的所有東西,例如建構函式,析構函式,友元等,c 的struct和c 類唯一不同就是 struct成員預設的是public,c 預設private。而c...
C語言和C 的區別
c和c 的關係 就像是win98跟winxp的關係。c 是在c的基礎上增加了新的理論,玩出了新的花樣。所以叫c加加。c和c 的區別 c是乙個結構化語言,它的重點在於演算法和資料結構。c程式的設計首要考慮的是如何通過乙個過程,對輸入 或環境條件 進行運算處理得到輸出 或實現過程 事務 控制 c 首要考...
C語言和C 的區別
c 是c發展來的!c 是物件導向的語言,而c是結構化的語言!c的所有 在c 上都能應用,而c 的 在c上不能應用!c 是功能更強大的c!c語言與vc 的區別有很多 1,全新的程式程式思維,c語言是面向過程的,而vc 是物件導向的。2,c語言有標準的函式庫,它們鬆散的,只是把功能相同的函式放在乙個標頭...