剛開始看沉思錄,覺得太枯燥。到了第八章,作者關於物件導向問題的分析,我follow書上的設計開發,理解了一些以前只是在書上看到的概念。
給自己做幾點註解吧:
1.虛基類用來表達所有的繼承類的共有特點,在這個例子中,所有的繼承類都要有輸出和求值計算,所以我們把這兩個函式定義為虛函式。
2.虛基類必須至少含有乙個純虛函式。該純虛函式可以定義也可以不定義。
3.我們要保證由虛基類派生出來的類的物件能被正確的析構,所以將虛基類的析構函式定義為虛函式。
4.對於虛函式如果沒有定義,也應該使用一對{}來表明。
5.友元類的所有成員函式都是另乙個類的友元函式,都可以訪問另乙個類中的隱藏資訊(包括私有成員和保護成員),而且友元類應先定義在使用友元類的類的前面。
6.當希望乙個類可以訪問另乙個類的私有成員時,可以將該類宣告為另一類的友元類。
7.友元關係不可以被繼承,也不可以傳遞,而且是單向的。
8.expr的建構函式使用的引數為expr,這樣就可以巢狀構造expr物件。
#ifndef expr_h
#define expr_h
#include#includeusing namespace std;
class expr_node//抽象基類
virtual int eval()const=0;
virtual ~expr_node(){};
public:
virtual void print(ostream &)const = 0;
};class expr//具體類
expr& operator=(const expr &);
~expr()
int eval()const
};class int_node :public expr_node
void print(ostream & o)const
int eval()const
};class unary_node :public expr_node
int eval()const;
void print(ostream & o)const };
class binary_node :public expr_node
int eval()const;
void print(ostream & o)const
};class ternary_node :public expr_node
void print(ostream & o)const;
int eval()const;
};int binary_node::eval()const
int unary_node::eval()const
expr::expr(int t)
expr::expr(const string & op, expr e)
expr::expr(const string &op, expr d, expr e)
expr::expr(const string &op, expr a, expr b, expr c)
expr& expr::operator=(const expr &r)
ostream & operator << (ostream &o, const expr_node &t)
ostream& operator <<(ostream & o, const expr &r)
void ternary_node::print(ostream & o)const
int ternary_node::eval()const
#endif
#include#include"expr.h"
using namespace std;
int main()
{ expr t = expr("*", expr("-", 5), expr("+", 3, 4));
cout << t <<"="<
《C 沉思錄》 第八章 乙個物件導向程式範例
node.h ifndef node h define node h include expr.h include include using namespace std class expr node virtual expr node virtual void print ostream con...
Perl語言入門筆記 第八章 用正規表示式進行匹配
用正規表示式進行匹配 pod m m m m m m 匹配的時候根據需要寫自己的定界符,像qw省略雙引號定界符一樣 模式匹配修飾符 跟在定界符後面的,x,x就是模式匹配修飾符 i 忽略大小寫 s 匹配任意字元 if barney.fred s s會把 裡面的.全部替換為 d d 這是需要再讓.匹配除...
C的基礎上學習C (第八章 物件導向程式設計簡介)
c 中,用new關鍵字來呼叫建構函式。例如,可以用下面的方式通過其預設的建構函式例項化乙個cupofcoffee物件 cupofcoffee mycup new cupofcoffee 還可以用非預設非建構函式來建立物件。cupofcoffee mycup new cupofcoffee blue ...