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++中共用體、結構體和類的區別
C 和C有區別嗎,c 和c 有什麼區別?
哎呀 1 表面上看,特別是語法上看 c 是c 的升級版,c 的語法c 基本上都支援,但也有很多不同,所以多數 不能直接移植,特別是內建函式與功能呼叫有很多不同。但在核心上,應用針對性上看,兩者可能完全不同,特別是c 不使用.net支援的情況下 vc裡的atl方式 2 單機或使用者介面程式設計方面 c...
object c和c 有什麼區別
北漂碼農 objective c標準c的一個擴充套件,和c 基本沒有關係,ios開發是可以用c 開發的,如果你從事ios開發,建議不用c 甚至忘記c 把objective c完全學通再說。c 和c 有什麼區別? c 只能在 net這個框架下開發 c 就是一定了.基本上萬能 c 專門用來開發asp.n...
C語言和C 有什麼區別?C語言和C 的區別
我覺得還是先學c,然後再學c 像上面幾位說的那樣,c是基礎,而且在嵌入式等很多底層程式設計的場合採用c比較多,而c 是一種基於c的語言,在c的基礎上加入的物件導向的思想,學習c 重要的是把物件導向搞清楚,這屬於進階層次。沒有程式設計基礎直接學習c 很難較好的理解物件導向。c是基礎,能力好直接c 也行...