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()函數存取