C++學習筆記——類和物件(二)
阿新 • • 發佈:2019-02-12
設計一個類就是設計一個新的型別,應該考慮:
- 此型別的“合法值”是什麼?
- 此型別應該有什麼樣的函式和操作符?
- 新型別的物件該如何被建立和銷燬?
- 如何進行物件的初始化和賦值?
- 物件作為函式的引數如何以值傳遞?
- 誰將使用此型別的物件成員?
類定義的語法形式:
class 類名稱
{
public:
公有成員(外部介面)
private:
私有成員
protected:
保護型成員
};
公有型別成員:在關鍵字public後面宣告,他們是類和外部的介面,任何外部函式都可以訪問公有型別資料和函式。
私有型別成員:在關鍵字private後面宣告,只允許本類中的函式訪問,而類外部的任何函式都不能訪問。如果緊跟在類名稱的後面宣告私有成員,則關鍵字private可以省略。
保護型別成員:與private類似,其差別表示在繼承與派生時對派生類的影響不同。
物件定義的語法:
類名 物件名 (Clock myClock;)
類中成員之間直接使用成員名互相訪問,從類外訪問成員使用“物件名.成員名”方式訪問public成員
類的成員函式:
- 再類中宣告函式原型;
- 可以在類外給出函式體實現,並在函式名前使用類名加以限定;
- 也可以直接在類中給出函式體,形成內聯成員函式;
- 允許宣告過載函式和帶引數值的函式。
內聯成員函式:
- 為了提高執行時的效率,對於較簡單的函式可以宣告為內聯形式 。
- 行內函數體中不要有複雜結構(如迴圈語句和switch語句)。
- 在類中宣告內聯成員函式的方式:
- 將函式體放在類的聲明裡
- 使用inline關鍵字
舉例:鐘錶類
類的定義:
#include <iostream> using namespace std; class Clock{ public: void setTime(int newH = 0; int newM = 0; int newS = 0); void showTime(); private: int hour, minute, second; }
成員函式的實現:
void Clock::setTime(int newH, int newM, int newS) {
hour = newH;
minute = newM;
second = newS;
}
void Clock::showTime() {
cout << hour << ":" << minute << ":" << second;
}
物件的使用:
int main() {
Clock myClock; // 定義一個Clock例項myClock
myClock.setTime(11, 11, 11);
myClock.showTime();
return 0;
}