C 類和結構體有什麼區別,C 中共用體 結構體和類的區別

時間 2021-08-30 09:43:59

1樓:匿名使用者

c/c++結構體的區別

c中的結構體和c++中結構體的不同之處:在c中的結構體只能自定義資料型別,結構體中不允許有函式,而c++中的結構體可以加入成員函式。

c++中的結構體和類的異同:

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

也就是說在c++當中,結構體中可以有成員變數,可以有成員函式,可以從別的類繼承,也可以被別的類繼承,可以有虛擬函式。

二、不同之處:結構體定義中預設情況下的成員是public,而類定義中的預設情況下的成員是private的。類中的非static成員函式有this指標,(而struct中沒有是錯誤的,一直被誤導啊,經過測試struct的成員函式一樣具有this指標),類的關鍵字class能作為template模板的關鍵字 即templateclass a{}; 而struct不可以。

實際上,c中的結構體只涉及到資料結構,而不涉及到演算法,也就是說在c中資料結構和演算法是分離的,而到c++中一類或者一個結構體可以包含函式(這個函式在c++我們通常中稱為成員函式),c++中的結構體和類體現了資料結構和演算法的結合。

2樓:匿名使用者

c++把結構體看作是所有成員訪問許可權都是public的一種類

3樓:幻形術

c++的結構體主要是為了相容c語言而存在的。

大多都一樣,只有兩點區別:

結構體的成員的預設訪問許可權是public,而類的成員的預設訪問許可權是private.

結構體經常用作c/c++最基本的通訊協議載體,標準規定編譯器不能擅自修改結構體各成員之間的記憶體佈局順序,必須嚴格按照成員的宣告先後順序擺放。而標準對類的成員記憶體佈局順序沒有規定,看各編譯器自己如何方便處理。

4樓:

在c++中,結構體是一種特殊形態的類。

結構體和類的唯一區別就是:  結構體和類具有不同的預設訪問控制屬性。

類中,對於未指定訪問控制屬性的成員,其訪問控制屬性為私有型別(private)

結構體中,對於未指定任何訪問控制屬性的成員,其訪問控制屬性為公有型別(public)

c++中,不使用結構體絲毫不會影響程式的表達能力。c++之所以要引入結構體,是為了保持和c程式的相容性。

但有時仍會在c++中使用結構體,是因為,可以使用結構體將不同型別資料組成整體,方便於儲存資料。(若用類來儲存,因類中成員預設為私有,還要為每個資料成員特定函式來讀取和改寫各個屬性,比較麻煩。)

c語言中結構體不允許定義函式成員,且沒有訪問控制屬性的概念。

c++為c語言中的結構體引入了成員函式、訪問控制許可權、繼承、包含多型等物件導向特性。

c++在struct之外引入了class關鍵字,但為了保持與c程式的相容,c++保留了struct關鍵字,並規定結構體預設訪問控制許可權為公有型別。

另外,c語言中,空結構體的大小為0,而c++中空結構體(屬於空類)的大小為1。

c++中空類的大小為1的原因:

空類也可以例項化,類例項化出的每個物件都需要有不同的記憶體地址,為使每個物件在記憶體中的地址不同,所以在類中會加入一個隱含的位元組。

c++中共用體、結構體和類的區別

基金a類和c類有什麼區別,基金a類和c類區別是什麼?

1.a類不會收取投資者的銷售服務費,c類會收取投資者的銷售服務費,a類會收取認購費。2.c類不會收取認購費,a類會收取申購費,c類不會收取申購費,持有 a類兩年類贖回有贖回費。3.超過兩年的沒有贖回費,持有 c類三十日內贖回有贖回費,超過三十日的沒有贖回費。不同。a類為前端收費的收費模式,申購 時一...

資料結構C語言,資料結構和C語言有什麼區別?

typedef struct qnode qnode,queueptr 定義兩個新資料型別qnode,queueptr,相當於 typedef struct qnode qnode typedef struct qnode queueptr 使用方法 qnode qdata struct qnode...

C 和C有區別嗎,c 和c 有什麼區別?

哎呀 1 表面上看,特別是語法上看 c 是c 的升級版,c 的語法c 基本上都支援,但也有很多不同,所以多數 不能直接移植,特別是內建函式與功能呼叫有很多不同。但在核心上,應用針對性上看,兩者可能完全不同,特別是c 不使用.net支援的情況下 vc裡的atl方式 2 單機或使用者介面程式設計方面 c...