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

2021-10-01 15:29:21 字數 1704 閱讀 6200

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

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

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

class和struct有什麼區別?

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

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

(定義類,不要用結構體用class)

小例項:

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

提供setoperator函式設定運算型別

提供setparameter函式設定運算引數

提供result函式進行運算

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

通過引用引數返回結果

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

將類的實現和定義分開

.h標頭檔案中只有類的宣告:成員變數和成員函式的宣告

.cpp原始檔中完成類的其它實現:成員函式的具體實現

下面就上面的小例項感受類的真正形態。

2.1 .**件

#pragma once

class operator

;

2.2.cpp檔案

#include "operator.h"

#include using namespace std;

bool operator::setoperator(char op)

else

return ret;

}void operator::setparameter(double p1,double p2)

bool operator::result(double& r)

else

break;

case '+':

r = mp1 + mp2;

break;

case '-':

r = mp1 - mp2;

break;

case '*':

r = mp1 * mp2;

break;

default:

ret = false;

break;

} return ret;

}

3.mian檔案

#include"operator.h"

#include int main()

else

system("pause");

return 0;

}

分析一波;

在類的標頭檔案中3個私有變數的作用?

mop返回操作符號,這個操作符號只能是內部函式使用,使用在函式setoperator,將使用者輸入的+賦值給mop;

當呼叫result()函式的時候,可以直接使用mop(類中私有變數)判斷具體使用哪個計算。

mp1和mp2主要是在呼叫setparameter 的時候將使用者輸入的2個數賦值給類內物件,然後給result()函式使用。

要是我可能就不會這樣,因為我對類內變數的使用還不是很清楚,我覺得這個小案例,應該從下面的思路去思考。

1.使用者只是需要輸入   + - * /

2.使用者輸入 2個數

那麼我要對它輸入的數,來實現。所以我一定在類中包括上面輸入的數。然後根據他們,再去設計函式去實現功能。

第16課類的真正形態

類的真正形態 上 問題 經過不停的改進,結構體struct變得越來越不像它在c語言中的樣子了。在c語言中,struct中是不能定義成員函式的,你如果實在想用成員函式,只能定義成函式指標的形式。這種方式在核心中太普遍了。struct 在c語言中已經有了自己的含義,因此c 也得必須繼續相容,但是在相容的...

16 類的真正形態

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

C 的第16節課

主講 建立windows窗體 主要內容 如何建立windows窗體 定製窗體的外觀。將控制項加入到windows窗 體中 使用文字框,標籤等 通過設定控制項的屬性定製其外觀 將事件和控制項stem關聯起來 16.1使用windows窗體 16.3定製 窗體的外觀,前乙個程式清單包含乙個基本窗體,於f...