筆者介紹:姜雪偉,it公司技術合夥人,it高階講師,csdn社群專家,特邀編輯,暢銷書作者,已出版書籍:《手把手教你架構3d遊戲引擎》電子工業出版社和《unity3d實戰核心技術詳解》電子工業出版社等。
不論在面試中還是專案開發中,都會遇到c與c++混用的情況,面對這些我們就要對它們的區別非常熟悉,這樣才能在專案中運用自如。在此也是給讀者做乙個總結,供參考。。。。。
在c ++中,struct和class是完全相同的,除了該struct預設為public 可見,class預設為private不可見。
c和c ++結構之間的一些重要區別:
結構內的成員函式:c中的結構不能在結構內部具有成員函式,但c ++中的結構可以與成員函式一起使用。
直接初始化:我們不能直接初始化c中的結構資料成員,但我們可以在c ++中實現。
首先給讀者展示的是c語言**:
// c program to demonstrate that direct
// member initialization is not possible in c
#includestruct record;
// driver program
int main()
/* output : compiler error
6:8: error: expected ':', ',', ';', '}' or
'__attribute__' before '=' token
int x = 7;
^in function 'main': */
輸出編譯錯誤,因為在c語言中的成員不能賦初值。
再給讀者展示c++中的**展示:
// cpp program to initialize data member in c++
#includeusing namespace std;
struct record;
// driver program
int main()
// output
// 7
輸出結果是7,編譯正確。
3、使用struct關鍵字:
在c中,我們需要使用struct宣告乙個struct變數。在c ++中,struct不是必需的。例如,讓record有乙個結構。
在c中,我們必須對record變數使用「struct record」。在c ++中,我們不需要使用struct,只能使用'record'。
4、靜態成員:
c結構不能有靜態成員,但允許使用c ++。
c的案例**如下所示:
// c program with structure static member
struct record;
// driver program
int main()
/* 6:5: error: expected specifier-qualifier-list
before 'static'
static int x;
^*/
編譯錯誤,在c中的結構體中不能宣告static靜態變數。
再看看c++中的**:
// c++ program with structure static member
struct record;
// driver program
int main()
5、
sizeof運算子:
該運算子將為c中的空結構生成
0,而在c ++中為空結構生成1。
// c program to illustrate empty structure
#include//empty structure
struct record;
//driver program
int main()
輸出c:
0c ++輸出:
1最後兩條:
6、資料隱藏:
c結構不允許資料隱藏的概念,但在c ++中允許,因為c ++是物件導向的語言,而c不是。
7、訪問修飾符:
c結構沒有訪問修飾符,因為這些修飾符不被語言支配。c ++結構可以具有這個概念,因為它在語言中是內建的。
C 結構體與類的區別
學習了c 的物件導向,最常見的和寫的就是類結構體,下面主要介紹一下結構體和類的區別。首先類是c 中物件導向獨有的,但是c和c 中都有結構體,下面我們來看一下c和c 中結構體的區別。這裡主要從封裝 多型 繼承 封裝和訪問許可權幾個方面來說。1 c和c 中結構體的區別 1 多型 c的結構體內不允許有函式...
C 結構體與類的區別
c 中的結構體型別 struct 型別是一種值型別,通常用來封裝小型相關變數組,例如,矩形的座標或庫存商品的特徵。下面的示例顯示了乙個簡單的結構宣告。public struct postaladdress 結構與類共享幾乎所有相同的語法,但結構比類受到的限制更多 儘管結構的靜態字段可以初始化,結構例...
C 結構體與類的區別
相同之處 c 中的結構體中可以包含函式,也可以定義public private protected資料成員 定義了結構體之後,可以使用結構體名來建立物件,但是c中的結構體不允許含有函式 即 在c 中,結構體中可以有成員變數,成員函式,可從別的類繼承,也可以被別的類繼承,可以含有虛函式 不同之處 結構...