zoukankan      html  css  js  c++  java
  • 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 表示当前对象,而静态函数不在对象内,因此当前对象的概念就不适用了

  • 相关阅读:
    Spring IoC 容器和 AOP
    MySQL 锁与事务控制
    MySQL 存储引擎的选择
    如何理解MySQL 索引最左前缀原则
    MySQL 索引
    Java 线程池
    Java多线程 ReentrantLock、Condition 实现生产者、消费者协作模式
    Java多线程并发中 CAS 的使用与理解
    Java多线程中协作机制
    Mysql-SQL生命周期-show profile
  • 原文地址:https://www.cnblogs.com/richardcpp/p/2964965.html
Copyright © 2011-2022 走看看