C 中struct和class的區別

2021-10-04 01:19:05 字數 1317 閱讀 3852

在c++中我們可以看到struct和class的區別並不是很大,兩者之間有很大的相似性。那麼為什麼還要保留struct,這是因為c++是向下相容的,因此c++中保留了很多c的東西。

struct a

;

注意:因為struct是一種資料型別,那麼就肯定不能定義函式,所以在面向c的過程中,struct不能包含任何函式。否則編譯器會報錯

面向過程的程式設計認為,資料和資料操作是分開的。然而當struct進入物件導向的c++時,其特性也有了新發展,就拿上面的錯誤函式來說,在c++中就能執行,因為在c++中認為資料和資料物件是乙個整體,不應該分開,這就是struct在c和c++兩個時代的差別。

在c++中struct得到了很大的擴充:

1.struct可以包括成員函式

2.struct可以實現繼承

3.struct可以實現多型

1.預設的繼承訪問權。class預設的是private,strcut預設的是public。

struct a

;struct b: a

;

例如上邊的**,strcut b就是公有繼承(public)的struct a。如果將strcut變為 class

那麼將會是私有繼承(private)這裡就不做展示了。所以我們在寫類的時候都會顯示的寫出是公有繼承還是私有繼承

當然,到底預設是public繼承還是private繼承,取決於子類而不是基類。我的意思是,struct可以繼承class,同樣class也可以繼承struct,那麼預設的繼承訪問許可權是看子類到底是用的struct還是class。如下:

struct a

;struct b: a //共有繼承

;class

c: a //私有繼承

;

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

struct a

;int

main()

//可以在類外訪問成員變數,所以struct預設是共有的

classb;

intmain()

//在內外無法訪問私有變數

3.「class」這個關鍵字還用於定義模板引數,就像「typename」。但關鍵字「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許可權。...