定義類別
文章推薦指數: 80 %
從C 背景來的開發者可能會想,這種風格像是C 的結構(struct),在C++ 中, struct 也被視為定義類別,將以上的 class 關鍵字換為 struct ,程式也可以運作, struct ...
回C++目錄
有些資料會有相關性,相關聯的資料組織在一起,對於資料本身的可用性或者是程式碼的可讀性,都會有所幫助,例如,在程式中你可能發現,在進行帳戶之類的處理時,帳號、名稱、餘額這三個資料總是一併出現的,這時可以將它們組織在一起,定義為類別:
account.h
#include
例如:
main.cpp
#include
若是Accountacct=acct1這類指定,會將acct1的值域複製給acct,若Account的值域佔用了許多資源,複製會造成負擔的話,可以透過參考或指標來避免複製的動作,例如printAcct(acct1)運用的就是參考。
可以使用new來動態建構Account的實例,動態建立的實例不需要時要使用delete清除,透過指標存取實例成員時,要使用箭號運算子「->」。
從C背景來的開發者可能會想,這種風格像是C的結構(struct),在C++中,struct也被視為定義類別,將以上的class關鍵字換為struct,程式也可以運作,struct與class的差別在於,前者在第一個權限可見的修飾詞出現前(例如public、private),定義的成員預設會是公開可存取,而後者預設會是私有(也就是private)。
執行結果如下:
Account(123-456-789,JustinLin,1000)
Account(789-654-321,MonicaHuang,1000)
在方才的範例中,初始Account值域的流程,其實是重複了,若要消彌這類重複,可以定義建構式(constructor),例如:
account.h
#include
如果沒有定義任何建構式,編譯器會自動產生沒有參數的預設建構式,如果自定義了建構式,就會使用你定義的建構式,在建構式或方法的實作中,若要存取實例本身,可以透過this,這是個指標,因此要透過箭號運算子來存取值域。
現在可以如下寫個程式來使用Account類別:
main.cpp
#include
現在to_string、deposit、withdraw被定義為Account的方法了,也稱為成員函式(memberfunction),因為實作時,可以透過this來存取實例,就不用在方法上定義接受Account的參數了,而原本的id、name、balance被放到了private區段,這是因為不想被公開存取,也就只能被建構式或方法存取,這麼一來,就可以定義更動這些值域的流程。
實際上,private在這邊是不需要的,如前頭談過的,以class定義類別時,在第一個權限可見的修飾詞出現前,定義的成員預設會是私有。
account.cpp
#include
延伸文章資訊
- 1C++的Class中的一些重點整理| Jason note
18.6. 如何判斷C++ 物件的類別? ... 18.24. 為何Google 禁止工程師使用C++ static object? 18.25. 是否能讓C++ template 的標頭檔只含...
- 2[物件導向Ep. 1] 類別與物件 - CodiMD
會建議使用C++ 或是Java 當作基底語言去學習,C++ 的原因是他有完整的物件導向特性;Java 也有(甚至有時候還比C++ 更好理解些),只是他的開發環境比較囉嗦;Python 本身是 ...
- 35. 類別(Classes) — Google C++ 開源專案風格指南
類別是C++ 中程式碼的基本單元。想當然爾,在程式中類別將被廣泛使用。本節列舉了在撰寫一個類別時該做的和不該做的事項。
- 4C++ 入門指南- 單元10 - 類別 - 程式語言教學誌
類別(class) 用來設計自己需要的物件(object) ,這是說,類別是物件的藍圖。 C++ 中設計類別使用關鍵字(keyword) class ,後面接大括弧宣告(declare) 類別的...
- 5定義類別
從C 背景來的開發者可能會想,這種風格像是C 的結構(struct),在C++ 中, struct 也被視為定義類別,將以上的 class 關鍵字換為 struct ,程式也可以運作, stru...