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 23structa4
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許可權。...