把符號表和變數表中的內容儲存到乙個檔案中,通過io檔案流,來把符號表和變數表儲存到檔案中。在這之前需要弄明白什麼是序列化和反序列化
物件的序列化
序列化:把物件轉換為位元組序列的過程
反序列化:把位元組序列恢復為物件的過程
我們要把symboltable類的物件(符號表)和storage類的物件(變數表)轉換成位元組序列儲存到檔案中,這時就可以設定serializer類來完成這樣的功能,同樣的設定乙個deserializer類來完成把儲存到檔案當中的位元組序列恢復為物件的功能。這裡要注意的是,所有的複雜型別都是由內建型別組合而成的,因此不是為某乙個類設定專門乙個序列化類,而是設定乙個序列化的基類,這個類可以把相關的資料型別轉換成位元組序列存入檔案中,再通過這樣的乙個基類,去把某乙個類的物件的內容儲存到檔案中。
在表示式計算器中,有20多個個類,僅僅是symboltable類的物件和storage類的物件需要儲存or載入的,有的類可以有這功能,有的類可以沒有這個功能。這樣的話,可以定義乙個」介面類「來表達這一功能,有的這個功能的就繼承,沒有就不繼承,當然c++裡頭沒介面的概念,不過我們可以用抽象類來模擬這樣的功能。這個抽象類就定義為serializable類。
注意:由於storage類和symbotable類是由calc類管理的,故calc類也需要繼承serializable類
serializer類
classdeserializer類serializer
;
classserializable類deserializer
;
classserializable
;
物件導向的表示式計算器(三)
scanner類的實現 掃瞄器的類圖 兩個關鍵函式 include 字串轉double double strtod const char nptr,char endptr char p number strtod buf curpos p strtod 會掃瞄引數nptr 字串,跳過前面的空格字元,...
表示式計算器
早在上大學的時候,就想編寫乙個可以計算數學表示式的計算器,因為windowsxp自帶的計算器不支援表示式輸入,當要計算乙個算式時,不太方便。表示式計算器看似簡單,但要想把它做完善,不太容易,經過幾次改進之後,於一年前完成了這個小程式,雖然可能會有一些不足,不過也不打算再投入時間了,價值不大,只是拿來...
計算器 字尾表示式
不過目前這個功能太少,而且能算的十分有限,測試輸入為 4 4 5 3 測試輸出為 4 4 5 3 27 主要就是了解一下怎麼把中綴表示式轉化成字尾表示式,然後再利用字尾表示式求值,我後續會完善這個程式,做個真正意義上的計算器。o o 轉化步驟我搜尋了一下,大致如下 將中綴表示式轉換為等價的字尾表示式...