1. 程式人生 > >C++學習筆記——類和物件(二)

C++學習筆記——類和物件(二)

設計一個類就是設計一個新的型別,應該考慮:

  • 此型別的“合法值”是什麼?
  • 此型別應該有什麼樣的函式和操作符?
  • 新型別的物件該如何被建立和銷燬?
  • 如何進行物件的初始化和賦值?
  • 物件作為函式的引數如何以值傳遞?
  • 誰將使用此型別的物件成員?

類定義的語法形式:

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;
}