類的真正形態(上)
問題:經過不停的改進,結構體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...