類別與物件
類別與物件的定義
- 物件是現實中的物件在程式中的模擬。類別是同一類物件的抽象,物件是類別的某一特定實體。
- 定義類別的物件後,才能通過物件使用類別中定義的功能。
例 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屬性的成員。
類別的成員函數
- 在類別中說明函數原型。
- 可以在類別外給出函數體實現,並在函數名前使用類別名稱加以限定。
- 也可以直接在類別中給出函數體,形成內聯成員函數。
- 允許聲明重載函數和帶預設參數值的函數。
