C和C 中的struct有什麼區別

2021-09-22 14:10:31 字數 976 閱讀 7280

struct 區別 在c 和c++ 中

c語言中:

struct是使用者自定義資料型別(udt)。

c++語言中:

struct是抽象資料型別(adt),支援成員函式的定義。

在c++中,struct的成員的預設訪問說明符為public,class為private。

c中的struct是沒有許可權設定的。

c++中struct增加了訪問許可權,且可以和類一樣有成員函式。

c++中的struct等同於class,只是class預設成員許可權是private,而struct預設成員許可權是public。

在標準c++中,struct和class有兩個區別:

第一:struct中的成員預設是public的,class中的預設是private的。

第二:在用模版的時候只能寫template < class type>或template < typename type>不能寫template < struct type>。

此外,如果沒有多型和虛擬繼承,在c++中,struct和class的訪問效率完全相同!簡單的說就是,訪問class的data member和非virtual function效率和struct完全相同!不管該data member是定義在基類還是派生類的。

如果不是為了和c相容,c++中就不會有struct關鍵字。因此建議是:如果不需要與c相容或傳遞引數給c程式,不要在c++中用struct。

注意class的data member在記憶體中的布局可不一定是data member的申明次序。c++只保證處於同乙個access section的data member按照申明次序排列。

c++的struct可以當作class來用,他和c++中class的唯一的區別是,class中的成員預設是private,而struct的成員預設為public。

c中的struct只能是一些變數的集合體,可以封裝資料卻不可以隱藏資料,而且成員不可以是函式。

狠芯低成本,專芯低功耗,計畫高效能。

C中的malloc和C 中的new有什麼區別?

1 new,delete是操作符,只能在c 中使用 2 malloc,free是函式,可以覆蓋,c,c 中都可以使用 3 new可以呼叫物件的建構函式,對應的delete呼叫相應的析構函式 4 malloc僅僅分配記憶體,free僅僅 記憶體,並不執行構造和析構函式 5 malloc free需要手...

C和C 中struct的區別是什麼

c語言的struct不能有函式成員,而c 的struct可以有 c語言的struct中資料成員沒有private public和protected訪問許可權的設定,而c 的struct的成員有訪問許可權設定 c語言中的struct是沒有繼承關係的,而c 的struct卻有豐富的繼承關係。c語言中的s...

struct在C和C 中的區別

c 中把struct當成類處理,只不過和類的一點小區別是struct中訪問許可權預設是public,而類中訪問許可權預設是private 而在c中,struct是抽象資料型別 基於這個,會有以下的區別 1 c中定義的時候需要在前面加上struct,而c 中不用 2 c 把struct當成類處理,所以...