類別與物件
類別與物件的定義
- 物件是現實中的物件在程式中的模擬。類別是同一類物件的抽象,物件是類別的某一特定實體。
- 定義類別的物件後,才能通過物件使用類別中定義的功能。
例 4_1-1:時鐘類別
類別的定義
#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; };
註解:Clock
類別定義完後,應該在末尾加上一個分號 (;
)。
成員函數的實現
void Clock::setTime(int newH, int newM, int newS) { hour = newH; minute = newM; second = newS; } void Clock::showTime() { cout << hour << ":" << minute << ":" << second << endl; }
物件的使用
int main() { Clock myClock; myClock.setTime(8, 30, 30); myClock.showTime(); return 0; } 執行結果: 8:30:30
設計類別就是設計型別
- 此型別的“合法值”是什麼?
- 此型別應該有什麼樣的函數和運算子?
- 新型別的物件該如何被創建和銷毀?
- 如何進行物件的初始化和賦值?
- 物件作為函數的參數如何以值傳遞?
- 誰將使用此型別的物件成員?
類別定義的語法形式
class 類別名稱 { public: 公有成員(外部介面) private: 私有成員 protected: 保護型成員 };
類內初始值
- 可以為資料成員提供一個類內初始值。
- 在創建物件時,類內初始值用於初始化資料成員。
- 沒有初始值的成員將被預設初始化。
類內初始值範例
class Clock { public: void setTime(int newH, int newM, int newS); void showTime(); private: int hour = 0, minute = 0, second = 0; };
類別成員的存取控制
- 公有類型成員:在關鍵字
public
後面聲明,它們是類別與外部的介面,任何外部函數都可以訪問公有類型資料和函數。 - 私有類型成員:在關鍵字
private
後面聲明,只允許本類中的函數訪問,而類別外部的任何函數都不能訪問。如果私有成員緊跟在類別名稱後面聲明,則關鍵字private
可以省略。 - 保護類型成員:與
private
類似,其差別在於繼承與衍生時對衍生類別的影響不同,詳見第七章。
物件定義的語法
類別名稱 物件名稱; Clock myClock;
類別中的成員互相訪問
- 直接使用成員名稱訪問。
類別外訪問
- 使用“物件名稱.成員名稱”的方式訪問
public
屬性的成員。
類別的成員函數
- 在類別中說明函數原型。
- 可以在類別外給出函數體實現,並在函數名前使用類別名稱加以限定。
- 也可以直接在類別中給出函數體,形成內聯成員函數。
- 允許聲明重載函數和帶預設參數值的函數。