Chapter 5.3 類別與指標 - TKU-ME-Lab/C-C-_tutorial GitHub Wiki
this指標是類別內建指標,它將自動被傳遞給類別中所有非靜態得函數.所以“this->資料成員”與”(*this).資料成員”則指向類別本身的資料成員位址
this ->資料成員 //指向資料成員位址
(*this). //指向資料成員位址
Example1:
class Employee
{
int EmpId;
char name[20];
public:
Employee()
{
EmpId = 0;
strcpy_s(name, "zzz");
}
void outputEmp()
{
cout << this->EmpId << endl; //取得Employee指標的EmpId
cout << (*this).name << endl; //取得Employee指標的name
}
}; //outputEmp函數中的 this->EmpId相當於Employee->EmpId
但因為此敘述在類別內部,所以不能使用Employee->EmpId,而必須以this->EmpId或(*this).
EmpId取得指標位址的EmpId的成員資料.同理,必須以this->name或(*this).
name來取得指標位址的name成員的資料
Example2:
#include<iostream>
using namespace std;
class Employee //宣告類別
{
int EmpId;
char name[20];
public:
Employee()
{
EmpId = 0;
strcpy_s(name, "zzz");
}
void setEmp(int id,const char *n)
{
EmpId = id;
strcpy_s(name,n);
}
void outputEmp()
{
cout << this ->EmpId << '\t'; //顯示0
cout << (*this).name << endl; //顯示zzz
}
};
int main()
{
Employee emp1; //建立無參數物件
cout << "ID\tEmpName\n";
cout << "---\t-------\n";
emp1.outputEmp();
emp1.setEmp(101,"TOM");
emp1.outputEmp();
system("cls");
system("pause");
return 0;
}
宣告類別型態的陣列與宣告一般資料型態的陣列一樣,只是資料型態給違使用者自訂的類別型態
類別名稱 陣列名稱[長度];
class Number
{
int num;
public:
void setNumber(void)
{
cout << "請輸入整數:";
cin >> num;
}
void showNumber() //輸出圖書資料函數
{
cout << num << '\t'; //輸出num資料
}
};
int main()
{
Number n[3]; //建立Number型態陣列
for(int i=0;i<3;i++)
{
n[i].setNumber(); //呼叫物件setNumber 函數
}
cout << "輸入三個整數為:";
for(int j=0;j<3;j++)
{
n[j].showNumber();
}
cout << endl;
system("pause");
return 0;
}
//上面範例是建立Number類別物件陣列n[3],然後各元素呼叫自己的setNumber成員函數,讀取與設定元素的值
再呼叫showNumber成員函數,讀取與 設定元素的num值.