結構體與類的異同

2021-10-24 13:23:48 字數 941 閱讀 9361

相同之處:

c++中的結構體中可以包含函式,也可以定義public、private、protected資料成員;定義了結構體之後,可以使用結構體名來建立物件,但是c中的結構體不允許含有函式;即

在c++中,結構體中可以有成員變數,成員函式,可從別的類繼承,也可以被別的類繼承,可以含有虛函式

不同之處:

結構體定義中預設情況下的成員是public,而類定義中的預設情況的成員是private的;

類中的非static成員函式有this指標(c++的結構體的非static成員函式也一樣具有this指標),類的關鍵字class能作為template模板的關鍵字,即template class a{};而結構體的struct不可以;

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

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

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

以上是表面的區別,實質上的區別是面向過程物件導向程式設計思想的區別:c的結構體值時把資料變數給包裹起來了,並不涉及演算法;而c++是把資料變數以及對這些資料變數的相關演算法給封裝起來,並且給對這些資料和類不同的訪問許可權;預設許可權區別:結構體->public 類->private

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

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

C與C 結構體異同

首先是結構體的定義和使用。在c語言中,結構體的定義一般配合typedef使用 struct loction typedef struct loctionloc typedef可以給乙個變數起 別名 在如上兩種定義方式中,當我們建立乙個結構體變數時,後者可以直接使用loc進行建立,而前者比較冗長 lo...

C語言中的結構體與C 中的類異同

從c語言到c 是程式設計思想的進步,技術發展的結果吧,所以c 基本上是相容c的語法的,c 的很多東西也是從c中繼承過來的,然後再發揚,c語言的結構體便是c 中類的雛形。簡單的一句話,c語言中的結構體是c 中類的祖先,也可以說c 中的類是c語言中結構體的超集,當然啦,祖先肯定是還沒有完全進化的,所以c...

類與結構體

1.c與c 中結構體的不同 1 c中的結構體不能申明函式,只能申明變數 c 中的結構體和類差不多,能申明資料成員,也能申明函式成員 2 c中的結構體不能進行封裝,而c 中由於是 類 可以進行封裝。2.c 中類與結構體的區別 首先說明c 中類與結構體在一定意義上是等價的 區別 1 在預設狀態下,結構體...