iT邦幫忙

1

【c/c++學習筆記】class中定義方法

接續上次講到【c/c++學習筆記】什麼是物件導向程式設計?什麼是class(類別)?這一篇,
今天要繼續教大家在c++的class的定義方法,
什麼是方法呢?
方法可以把它想成是一個類別可以做到的事情
譬如說電鍋是一個類別,
電鍋有屬性:「大小」和「顏色」,
電鍋有方法:「煮飯」,
那麼我們可以這樣寫:

class ElectricPot
{
    public:
        int size;
        string color;
        void cook();
};

cook()是我們為電鍋這個類別定義的方法,
要使用它的話,
可以在主程式中創建一個「電鍋」物件,
然後用.呼叫cook這個方法,例如:

int main()
{
    ElectricPot myPot;
    myPot.cook();
}

但此時我們還沒告訴程式呼叫了cook()這個方法後,
電鍋具體會做什麼事
以下有兩種定義方法的方式:

一、在class內定義方法

譬如說我們希望呼叫電鍋的cook()方法時,
印出電鍋的顏色並說它在煮飯,
範例如下:

#include <iostream>
#include <string>
using std::string;

class ElectricPot
{
    public:
        int size;
        string color;
        void cook(){ //在class()內定義方法
            std::cout << "我是"<< this->color <<"顏色的電鍋,我正在煮飯"<<std::endl;
        }
};

int main()
{
    ElectricPot myPot;
    myPot.size = 20;
    myPot.color = "yellow";
    myPot.cook();
    return 0;
}

這邊用到一個關鍵字this,表示指向自己這個物件的指標,
因此用this->color可以取得自己的顏色

二、在class外定義方法

方法亦可以先在class裡面宣告好,在class之外才定義,
定義的方法為用兩個冒號::取得類別的方法,例如:

#include <iostream>
#include <string>
using std::string;

class ElectricPot
{
    public:
        int size;
        string color;
        void cook();
};

// 在class外定義方法
void ElectricPot::cook()
{
    std::cout << "我是"<< this->color <<"顏色的電鍋,我正在煮飯"<<std::endl;
}

int main()
{
    ElectricPot myPot;
    myPot.size = 20;
    myPot.color = "yellow";
    myPot.cook();
    return 0;
}

先教到這邊吧~


尚未有邦友留言

立即登入留言