C++(三十) — this 指针

1、如何区分多个对象调用同一个类函数?

   类外部访问类成员,必须用对象来调用。一个类的所有对象在调用的成员函数,都执行同一段代码,那成员函数如何区分属于哪个对象呢?

  在对象调用成员函数时,除接收实参外,还接受一个对象的地址。也就是隐含参数:this 指针(编译器自动实现).

  this 指针指出,成员函数当前所操作的数据所属的对象。不同对象调用成员函数时,this指针指向不同对象。

2、 关于this指针的一个经典回答:

  当你进入一个房子后,你可以看见桌子、椅子、地板等,但是房子你是看不到全貌了。对于一个类的实例来说,你可以看到它的成员函数、成员变量,但是实例本身呢?  

  this是一个指针,它时时刻刻指向你这个实例本身。

class test
{
public:
    // 
    test(int a, int b)  // test(test *this, int a, int b)
    {
        this->a = a;
        this->b = b;
        cout << "构造函数执行" << endl;
    }
    void print()
    {
        cout << a << endl;
        cout << this->b << endl;
    }
private:
    int a;
    int b;
};

int main()
{
    test t(1,2);  
    t.print(); // print(&t )

    system("pause");
    return 0;
}

 

posted @ 2019-01-03 21:44  深度机器学习  阅读(214)  评论(0编辑  收藏  举报