C 中struct與class的區別

2021-10-07 15:58:54 字數 631 閱讀 3393

如果沒有多型和虛擬繼承,在c++中,struct和class的訪問效率完全相同,訪問class的資料成員與非虛函式效率和struct完全相同,不管該資料成員是定義在基類還是派生類。

class的資料成員在記憶體中的布局不一定是資料成員的宣告順序,c++只保證處於同乙個access section的資料成員按照宣告順序排列

在c++中,class和struct做型別定義是只有兩點區別:

1.預設繼承許可權不同,class繼承預設是private繼承,而struct預設是public繼承

2.class還可用於定義模板引數,像typename,但是關鍵字struct不能同於定義模板引數

c++保留struct關鍵字,原因:

1.保證與c語言的向下相容性,c++必須提供乙個struct

2.c++中的struct定義必須百分百地保證與c語言中的struct的向下相容性,把c++中的最基本的物件單元規定為class而不是struct,就是為了避免各種相容性要求的限制

3.對struct定義的擴充套件使c語言的**能夠更容易的被移植到c++中。

通常情況下,大部分資料設為private,因此使用class情況比較多;

但是有時作為介面資料(public)或作為純資料結構時,使用struct更方便,目的更明確。

C 中class與struct的區別

類與結構的例項比較 類與結構的差別 如何選擇結構還是類 一 類與結構的示例比較 結構示例 類示例 呼叫過程 從上面的例子中我們可以看到,類的宣告和結構的宣告非常類似,只是限定符後面是 struct 還是 class 的區別,而且使用時,定義新的結構和定義新的類的方法也非常類似。那麼類和結構的具體區別...

C 中class與struct的區別

一 類與結構的示例比較 結構示例 類示例 呼叫過程 從上面的例子中我們可以看到,類的宣告和結構的宣告非常類似,只是限定符後面是 struct 還是 class 的區別,而且使用時,定義新的結構和定義新的類的方法也非常類似。那麼類和結構的具體區別是什麼呢?二 類與結構的差別 1.值型別與引用型別 結構...

C 中struct與class的區別

1。字面上的區別 在字面上struct是structure的縮寫,通常叫做 結構體 在c語言裡用於將多種資料 多個變數組織在一起,便於表達比較複雜的資料型別,在c 中為了相容c語言保留了該關鍵字,並且保留了c語言中的所有功能。雖然在字面上struct與class的含義不一樣,但在c 中其功能基本是相...