c struct和class的用法總結

2021-09-26 23:18:08 字數 1552 閱讀 9493

由於自己是直接系統學習的c++,所以對struct的用法還是很模糊,感覺它就是不如class,但是具體有哪些不同,除了知道預設訪問許可權不同,就不知道別的,所以還是有必要總結一番。

1、c和c++中struct的區別

c中的struct沒有成員函式,僅僅是資料的結合,而c++中的struct是對c中的struct進行了擴充,所以增加了很多功能,可以說跟class已經有很多相似之處。且在c中使用結構體時需要加上struct,或者對結構體使用typedef取別名,而c++可直接使用。

//結構體宣告,c和c++使用同乙個

struct student

typedef

struct student student2;//c中取別名

struct student stu1;

//c中正常使用

student2 stu2;

//c中通過取別名的使用

student stu3;

//c++中使用

由於c和c++語言的特點,在c中結構體就是不同型別資料的集合,並不涉及演算法和操作,而c++是把資料變數及對這些資料變數的相關演算法和操作給封裝起來。

2、c++中struct和class的區別

a. struct預設的訪問屬性是public,而class預設的訪問屬性是private。

struct a

;class b

;int

main()

b. 在繼承關係中,struct預設是public的,而class是private,不過不建議這樣寫,一般都是寫明繼承的方式。

struct a

;struct b : a

;class b : public a;

struct b : public a;

intmain()

c. class這個關鍵字還可用於定義模板引數,就像typename,但是strcut不用與定義模板引數。

template

//可以把typename換成class

intfunc

(const t& t,

const y& y )

d. 賦初值問題,c中對struct賦初值可以用{}的形式,而在c++中的class則不行,需要呼叫建構函式。(所以說,加入乙個建構函式或是乙個虛函式會使strcut更體現出一種物件的特性)

struct a

;a a =

;//定義時賦初值,在struct時沒問題,在class時出錯

e.例項化的class儲存在堆中,而struct儲存在棧內,struct的執行效率相對較高。

總結:什麼時候用struct,什麼時候用class呢?

如果更像是一種資料結構集合的話,那麼用struct(比如乙個基函式,裡面只需要幾個變數的那種),如果你要做的更像是一種物件的話,那麼用class(裡面涉及到成員變數、建構函式、析構函式等)。

C struct和class的比較

什麼是class?class是我們通常所說的類,是物件導向程式設計的基本概念,一種可以自定義的資料結構型別,c 中的class 通常包含字段 屬性 方法 建構函式 索引器 操作符等等。在.net中,所有的類都最終繼承自system.object類,因此是一種引用型別,也就是說,new乙個類的例項時,...

C struct和class的比較

什麼是class?c 中的class 通常包含字段 屬性 方法 建構函式 索引器 操作符等等。在.net中,所有的類都最終繼承自system.object類,因此是一種引用型別,也就是說,new乙個類的例項時,例項的值儲存在託管堆 managed heap 中,而類的例項在堆疊 stack 上存放的...

C struct和class的區別

在c 中我們可以看到struct和class的區別並不是很大,兩者之間有很大的相似性。那麼為什麼還要保留struct,這是因為c 是向下相容的,因此c 中保留了很多c的東西。struct a 注意 因為struct是一種資料型別,那麼就肯定不能定義函式,所以在面向c的過程中,struct不能包含任何...