this指针

#include <iostream> 
using namespace std; 
  
class A 
{ 
public: 
    int get() const{return i;} 
    void set(int x){this->i=x;cout<<"this指针保存的内存地址为:"<<this<<endl;} 
private: 
    int i; 
}; 
  
int main() 
{ 
    A a; 
    a.set(9); 
    cout<<"对象a所在的内存地址为:"<<&a<<endl; 
    cout<<"对象a所保存的值为:"<<a.get()<<endl; 
    cout<<endl; 
    A b; 
    b.set(999); 
    cout<<"对象b所在的内存地址为:"<<&b<<endl; 
    cout<<"对象b所保存的值为:"<<b.get()<<endl; 
    return 0; 
}

这个程序的输出如下:

      通过这个输出结果,我们可以看到,对象a的内存地址和this指针的一模一样(都是0017F7E8);而当运行到对象b的时候,它的内存地址又和它所对应的this指针指向的内存地址一模一样了(都是0017F7DC)。这就说明了this指针变量记录的是当前对象的内存地址,即this指针指向当前的对象!

      在程序的第8行,我们就用了this指针的这个属性,即:this->i=x;这句话就表示把x的值赋值给当前的对象的私有成员函数i。

this只能在成员函数中使用,全局函数,静态函数都不能使用this。静态函数不属于任何一个对象,是全体对象共有,this 表示当前对象,而静态函数不在对象内,因此当前对象的概念就不适用了

原文地址:https://www.cnblogs.com/richardcpp/p/2964965.html