1. 程式人生 > >類(Class)

類(Class)

  • 類的實質是資料型別,類似於int、char等基本型別,不同的是它是一種複雜的資料型別。因為它的本質是型別,而不是資料,所以不存在於記憶體中,不能被直接操作,只有被例項化為物件時,才會變得可操作。

  • 類定義
class 類名{
public:
 //公有成員。
private:
 //私有成員
protected:
 //保護成員
}; 
  1. 公有成員、私有成員、保護成員均包含資料成員和成員函式兩部分,彼此沒有順序之分。一個public/private/protected關鍵字下可以跟多個成員,直到下一個public/private/protected關鍵字。如果成員前面沒有public/private/protected關鍵字,預設為私有成員。

  2. private 表示該部分內容是私密的, 不能被外部所訪問或呼叫, 只能被本類內部訪問; 而 public 表示公開的屬性和方法, 外界可以直接訪問或者呼叫。

  3. 一般來說類的屬性成員都應設定為private, public只留給那些被外界用來呼叫的函式介面, 但這並非是強制規定, 可以根據需要進行調整。

  4. 類的資料成員是型別,所以不能被賦值,宣告資料成員和宣告普通變數的格式相同,比如“int n;”。

  • 舉例

在類定義時定義成員函式。

#include <iostream>
using namespace std;
class Point{
    public:
        void setPoint(int x, int y){ //實現setPoint函式
            xPos = x;
            yPos = y;
        }
        void printPoint(){       //實現printPoint函式
            cout<< "x = " << xPos << endl;
            cout<< "y = " << yPos << endl;
        }
    private:
        int xPos;
        int yPos;
};

int main(){
    Point M;        //用定義好的類建立一個物件 點M
    M.setPoint(10, 20); //設定 M點 的x,y值
    M.printPoint();     //輸出 M點 的資訊
    return 0;
}

在類外定義成員函式。

返回型別 類名::成員函式名(引數列表) 

#include <iostream>
using namespace std;
class Point{
    public:
        void setPoint(int x, int y); //在類內對成員函式進行宣告
        void printPoint();
    private:
        int xPos;
        int yPos;
};

void Point::setPoint(int x, int y) {//通過作用域操作符 '::' 實現setPoint函式
    xPos = x;
    yPos = y;
}
void Point::printPoint() {      //實現printPoint函式
    cout<< "x = " << xPos << endl;
    cout<< "y = " << yPos << endl;
}

int main(){
    Point M;        //用定義好的類建立一個物件 點M
    M.setPoint(10, 20); //設定 M點 的x,y值
    M.printPoint();     //輸出 M點 的資訊
    return 0;
}