Chapter 5.1 程式類別 - TKU-ME-Lab/C-C-_tutorial GitHub Wiki

簡介

類別(class)是一種使用者自訂義的資料型態,與結構一樣類別是由許多資料型態集合而成的
程式設計師可以在類別中定義多種資料型態的變數,如int,char,float或string等等
這些資料變數稱為類別的資料成員(data member)
類別中還包括存取資料成員的函數稱為成員函數(member function)

宣告類別名稱

Class 類別名稱
{
private:
         //定義私用成員
public:
         //定義公用成員
};


Example:

Class Employee
{
private:
         //定義私用成員
public:
         //定義公用成員
};

類別資料成員

資料型態 變數名稱;

Class Employee
{
    int EmpId;   //定義privatey 資料成員
    char name[20];   //定義privatey 資料成員
public:
         //類別公用成員
};

類別成員函數

1.定義類別函數與定義一般函數的語法是一樣的,只是類別成員函數是定義在類別內,屬於類別的函數
2.在類別中,一般都含有公用的設定(set)與取得(get)函數成員,提供其他類別函數來設定與取得本類別中私用的資料成員

傳回型態 函數名稱(參數列)
{
     //敘述區
}


Example:

Class Employee
{
     int EmpId;   //定義privatey 資料成員
     char name[20];   //定義privatey 資料成員

public:
     void inputEmp()   //宣告public成員函數
     {
         cout << “EmpId:” << endl;
         cin >> EmpId;
         cout << “EmpName:” << endl;
         cin >> name;
     }
     void outputEmp()   //宣告public成員函數
     {
         cout << “EmpId:” << EmpId << endl;
         cout << “EmpName:” << name << endl;
     }
};

範圍運算符號(::)

1.在類別(class)外實現(implement)成員函數時,必須使用範圍運算符號(::)
2.範圍運算符號(::)將函數指定給宣告此成員函數原型的類別
例如,利用Employee::inputEmp()將函數指定給Employee類別
在類別外定義成員函數,可隱蔽函數的程式碼

Class Employee
{
     int EmpId;   //定義privatey 資料成員
     char name[20];   //定義privatey 資料成員

public:
     void inputEmp();   //宣告public成員函數原型
     void outputEmp();   //宣告public成員函數原型
};
void Employee::inputEmp()   //定義inputEmp成員函數
{
     cout << “EmpId:” << endl;
     cin >> EmpId;
     cout << “EmpName:” << endl;
     cin >> name;
}
Void Employee::outputEmp()   //定義outputEmp成員函數
{
     cout << “EmpId:” << EmpId << endl;
     cout << “EmpName:” << name << endl;
}

建立類別物件

類別名稱 物件名稱;

1.類別名稱為曾經以class宣告的類別名稱
2.物件名稱用來存放使用者自定的類別型態的變數名稱

int main()
{
     Employee emp1;   //宣告Employee類別物件
     return 0;   //程式結束
}

說明:假設已經定義Employee類別如前面的範例,然後在main函數中建立Employee物件(或稱變數)emp1 此時emp1物件含有EmpId與name兩個資料成員與inputEmp()與outputEmp()兩個成員函式

存取類別成員

類別名稱 物件名稱;

1.物件名稱為已宣告的物件變數
2.類別成員是在類別中宣告的公用資料成員或成員函數名稱,若是存取資料成員則不須加小括號

int main()
{
     Employee emp1;
     emp1.inputEmp();   //呼叫物件函數inputEmp
     emp1.outputEmp();   //呼叫物件函數outputEmp
     return 0;   //程式結束
}

說明:假設已經定義Employee類別如前面的範例,在main函數中建立Employee物件(或稱變數)emp1 此時emp1.inputEmp()表示呼叫emp1的inputEmp函數,而emp1. outputEmp()表示呼叫emp1的outputEmp函數

P.S.因為Empld 與name資料成員為private,所以不能使用emp1.EmpId或emp1.name存取這兩個資料 而必須透過inputEmp()與outputEmp()函數存取