第16課類的真正形態

2022-06-21 06:30:10 字數 1966 閱讀 9993

類的真正形態(上)

問題:經過不停的改進,結構體struct變得越來越不像它在c語言中的樣子了。

在c語言中,struct中是不能定義成員函式的,你如果實在想用成員函式,只能定義成函式指標的形式。這種方式在核心中太普遍了。

struct 在c語言中已經有了自己的含義,因此c++也得必須繼續相容,但是在相容的基礎上又有了改進,比如說可以定義成員函式了。

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

class和struct的用法是完全相同的

class和struct有什麼本質區別?

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

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

struct a

};class a

};好的習慣:不管是用class定義類,還是用struct定義類,必須顯示的指明成員變數和成員函式的訪問級別。

類的真正形態

(下)小例項

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

-提供setoperator函式設定運算型別

-提供setparameter函式設定運算引數

-提供result函式進行運算

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

通過引用引數返回結果

c++中的類支援宣告和實現的分離

宣告就是類的使用方式,實現就是類的實現細節

將類的實現和定義分開

-.h 標頭檔案中只有類的宣告

.成員變數和成員函式的宣告

-.cpp原始檔中完成類的其它實現

.成員函式的具體實現

例項分析

operator類的分析

operator.h

1

#ifndef _operator_h_

2#define _operator_h_34

class

operator5;

1617

#endif

operator.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 #include 2 #include "

operator.h"3

4int

main()515

else

1619

20return0;

21 }

小結:c++引進了新的關鍵字class用於定義類

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

c++中的類支援宣告和實現的分離

在標頭檔案中宣告類

在原始檔中實現類

C (類的真正形態 第16課)

struct在c語言中已經有了自己的含義,必須繼續相容 在c 中提供了新的關鍵字class用於類定義 class和struct的用法是完全相同的 class和struct有什麼區別?在用struct定義類時,所有成員的預設訪問級別是public 在用class定義類時,所有成員的預設訪問級別是pri...

16 類的真正形態

問題 class和struct有什麼區別?範例 class的初探 include struct a class b int main int argc,const char argv c 中的類支援宣告和實現的分離 將類的實現和定義分開 範例 綜合程式 四則運算 operator.h檔案 ifnde...

十六 類的真正形態

1 類的關鍵字在用struct定義類時,所有成員的預設訪問級別為public在用class定義類時,所有成員的預設訪問級別為private include struct a class b int main 2 小例項 需求 開發乙個用於四則運算的類 operator.h ifndef operat...