1. 程式人生 > >成員函式及this指標的意義

成員函式及this指標的意義

同樣受訪問修改符的限制,被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的地址

  1. 成員函式:定義在class內的函式
  2. 成員函式的呼叫:也是仍然點號或箭頭,也受public/private的限制
  3. 使用隱含的this指標,來訪問本物件的成員,this指標指向了物件自己
    注:this指標是在形式上做了一個簡化,使得使用者少傳一個物件的指標作為引數