EasyC++,類的實現
大家好,我是梁唐。
想要追求更好閱讀體驗的同學,可以點擊「閱讀原文」訪問github倉庫。
類的實現
當我們完成了類定義之后, 還需要來實現類當中的函數。
比如我們在stock00.h當中定義了一個類:
- #ifndef STOCK00_H_
- #define STOCK00_H_
- #include <string>
- class Stock {
- private:
- std::string company;
- long shares;
- double share_val;
- double total_val;
- void set_tot() {total_val = shares * share_val;}
- public:
- void accquire(const std::string &co, long n, double pr);
- void buy(long num, double price);
- void sell(long num, double price);
- void update(double price);
- void show();
- };
- #endif
成員函數
在這個定義當中,我們只是聲明了函數,并沒有具體實現函數的邏輯。
我們通常會在同名的cpp文件當中實現,實現的時候,需要使用作用域解析運算符來表示函數所屬的類:
- void Stock::update(double price) {
- ...
- }
這樣就表明了update函數所屬Stock這個類,這也就意味著我們可以創建屬于其他類的同名函數:
- void Buffoon::update() {
- ...
- }
其次,我們在成員函數當中,可以訪問private限定的成員變量。比如說在show函數當中,我們可以這樣實現:
- void Stock::show() {
- std::cout << company << shares << share_val << total_val << endl;
- }
雖然company,shares都是類的私有成員,但在成員方法當中,一樣可以正常訪問。
再次,我們在成員方法當中調用另外一個成員方法,可以不需要解析運算符。比如我們要在show函數內調用update函數,直接使用update()即可,而無需前面的Stock::。
內聯函數
我們再回過頭來看一下Stock這個類的定義,在類的定義當中,有一個叫做set_tot的函數。我們直接在類當中實現了邏輯。雖然同樣是成員函數,但是在類當中直接實現的函數是有所區別的。在類聲明當中實現的函數,會被視為是內聯函數。
一般我們會把一些比較簡短的函數在類的聲明當中直接實現,當然我們也可以使用關鍵字inline,手動指定某個函數是內聯的。
- class Stock {
- private:
- void set_tot();
- public:
- ...
- };
- inline void Stock::set_tot() {
- total_val = shares * share_val;
- }
本文轉載自微信公眾號「Coder梁」,可以通過以下二維碼關注。轉載本文請聯系Coder梁公眾號。