成員函式及this指標的意義
阿新 • • 發佈:2019-01-10
同樣受訪問修改符的限制,被public修飾的可以被外部訪問,被private修飾的則不能被外部訪問
class Object
{
public:
int x;
int y;
void Test()
{
printf("hello,world!\n");
}
private:
void Test2()
{
printf("I am a private function!\n");
}
};
引例:要在Test()函式中,將x,y打印出來?怎麼做?
class Object
{
public :
int x;
int y;
void Test()
{
//列印x,y
}
};
Object obj;
obj.Test();//已經定義了一個obj物件,如果在Test函式裡把x,y打印出來?
方法一:呼叫函式的時候傳遞一個指標
方法二:使用this指標
class Object
{
int x;
int y;
void Test()
{
printf("x=%d,y=%d\n",this ->x,this->y);
}
};
obj.Test();
//當Test被呼叫時,已經把物件obj的指標傳給它了。
//編譯器內部就是這麼實現的,沒必要在畫蛇添足地傳一個指標給它
使用this指標,可以直接訪問本類的其他成員(變數,函式),不受public/private的限制
class Object
{
private:
int x;
int y;
public:
int Add()
{
return this->x+this->y;//用this->呼叫其他成員
}
void Test()
{
printf("Sum:%d\n",this->Add());//用this呼叫其他成員
}
}
觀察:this是否就是物件obj的地址
- 成員函式:定義在class內的函式
- 成員函式的呼叫:也是仍然點號或箭頭,也受public/private的限制
- 使用隱含的this指標,來訪問本物件的成員,this指標指向了物件自己
注:this指標是在形式上做了一個簡化,使得使用者少傳一個物件的指標作為引數