C 中的class和struct區別

2022-08-18 10:36:11 字數 2710 閱讀 4222

1,經過不停的改進,結構體 struct 變得原來越不像它在 c 語言中的樣子了;

1,struct 在 c 語言中僅為了定義乙個變數的集合,僅此而已,不能定義函式;

2,struct 在 c++ 中既可以定義訪問級別又可以定義成員函式;

2,類的關鍵字:

1,struct 在 c 語言中已經有了自己的含義,必須繼承相容;

1,而在 c++ 中有了別的含義,違背了設計 c++ 相容 c 的初衷;

2,尋找新的關鍵字來定義類;

2,在 c++ 中提供了新的關鍵字 class 用於類定義;

3,class 和 struct 的用法是完全相同的,但只有乙個本質區別,如下;

1,在使用 struct 定義類時,所有成員的預設訪問級別為 public;

2,在用 class 定義類時,所有成員的預設訪問級別為 private;

3,class 的初探:

1 #include 2

3structa4

12};

1314

class b //

以後開發中,只使用這個關鍵自定義類;

1523

};24

25int

main()

26

4,小例項:

1,需求:開發乙個用於四則運算的類:

1,提供 setoperator 函式設定運算型別;

2,提供 setparameter 函式設定運算引數;

3,提供 result 函式進行運算:

1,其返回值表示運算的合法性;

2,通過引用引數返回結果;

2,客戶關心使用、不關心實現、簡單易用就好,類的開發者關心類如何實現、內部實現方式;

3,既然類分為外部介面(使用方式)和內部實現(實現細節)兩部分,則最終的源**上也應該有所體現;

5,類的真正形態:

1,c++ 中的類支援宣告(類的使用方式)和實現(類實現的內部細節)的分離;

2,使用標頭檔案和原始檔的方式來將類的實現和定義分開:

1,*.h 標頭檔案中只有類的宣告:

1,成員變數和成員函式的宣告,不包括成員函式體的實現;

2,*.cpp 原始檔中完成類的其它實現:

1,成員函式的具體實現;

6,operator 類的分析:

1,*.h 檔案:

1

#ifndef _operator_h_

2#define _operator_h_34

class

operator5;

1617

#endif

1,僅僅是類的宣告而已,表達的也就是使用者的需求,僅僅是如何使用這個類;

2,*.cpp 檔案:

1 #include "

operator.h"2

3bool operator::setoperator(char

op)4

12else

1316

17return

ret;18}

1920

void operator::setparameter(double p1, double

p2)21

2526

bool operator::result(double&r)

2737

else

3841

break;42

case'+

':43 r = mp1 +mp2;

44break;45

case'*

':46 r = mp1 *mp2;

47break;48

case'-

':49 r = mp1 -mp2;

50break;51

default

:52 ret = false;53

break;54

}5556return

ret;

57

1,考慮的是這個類的這些函式功能該如何實現;

3,類的使用:

1 #include 2 #include "

operator.h"3

4int

main()516

else

1720

21return0;

22 }

1,編寫 main() 函式的函式體時,其實是在使用乙個類,但是沒有關心它是怎麼實現的,僅僅是呼叫公開的成員函式這些公開的成員函式就是這個 operator 類的使用方式;

2,使用類的方式:定義這個類的物件並通過物件來呼叫共有成員變數或者成員函式;

7,小結:

1,c++ 引進了新的關鍵字 class 用於定義類;

1,從此後只使用 class 定義類(一般的);

2,struct 只用來表示變數的集合(一般的),代表乙個結構體;

2,struct 和 class 的區別在於預設訪問級別的不同;

3,c++ 中的類支援宣告和實現的分離,意義在於分兩個角度來看待類,乙個是宣告的角度、乙個是實現的角度:

1,在標頭檔案中宣告類;

1,類的使用方式;

2,在原始檔中實現類;

1,類的實現細節;

3,在具體開發中,在 c++ 的標頭檔案裡面來做類的宣告,在 c++ 的原始檔裡面來做類的具體實現;

C 中struct和class的差別

在c 中,struct和class除了預設訪問控制級別不一樣,其它別無二致,具體怎麼用,純屬於個人習慣。另 在stroustrup c 發明者 的原作中 他自己說的原句是 按照定義,乙個struct就是乙個類,而只是完全公開的類 所以 struct s 等價於class s public 也就是說,...

c 中struct和class的區別

有這麼幾點不同 1.struct 是值型別,class是物件型別 2.struct 不能被繼承,class可以被繼承 3.struct 預設的訪問許可權是public,而class預設的訪問許可權是private.4.struct不能由程式設計師申明建構函式,即使是預設 不帶引數 的建構函式,同樣也...

C 中 struct 和 class 的區別

從語法上,class和struct做型別定義時只有兩點區別 一 預設繼承許可權。如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理 二 成員的預設訪問許可權。class的成員預設是private許可權,struct預設是public許可權。...