zoukankan      html  css  js  c++  java
  • this与*this的区别(C++)

    this与*this的区别

    • return this返回的是当前对象的地址,毕竟this便是指针

    • 而return *this返回的是this指针所指向的对象,根据引用的有无来确定返回的对象是本身的克隆还是本身。

    • 比如

    • 	    类名 get_copyed()
      		{
      			return *this;
      		}
      
    • 返回的是克隆(印刷品、盗版)

    • 再比如

    • 	    类名& get_original()
      		{
      			return *this;
      		}
      
    • 返回的是本身(原稿)

    代码

    #include<bits/stdc++.h>
    using namespace std;
    class A
    {
    	public:
    		int x;
    		/***得到指针指向的地址***/
    		A* get_address()
    		{
    			return this;
    		}
    		/***得到复制样本***/ 
    		A get_copyed()
    		{
    			return *this;
    		}
    		/***得到原稿***/ 
    		A& get_original()
    		{
    			return *this;
    		}
    		/***析构函数***/
    		
    };
    int main()
    {
    	A a;
    	a.x=333;
    	
    	/***确认返回的是地址***/
    	if(&a==a.get_address())
    	{
    		cout<<"地址对上了"<<endl<<"`````````"<<endl; 
    	 }
    	else
    	{
    		cout<<"地址没对上"<<endl<<"`````````"<<endl; 
    	} 
    	
    	
    	/***copy***/
    	A reveive_temporary1=a.get_copyed();
    	if(&a!=&reveive_temporary1&&a.x==reveive_temporary1.x)
    	{
    		cout<<"地址没对上,但值拿到了"<<endl<<"`````````"<<endl; 
    	 }
    	else 
    	{
    		cout<<"。。。。"<<endl<<"`````````"<<endl; 
    	}  
    	
    	
    	/***原稿***/
    	//这里也要用一个引用A& reveive_temporary2
    	A& reveive_temporary2=a.get_original();
    	if(&a==&reveive_temporary2&&a.x==reveive_temporary2.x)
    	{
    		cout<<"地址对上了,值也拿走了"<<endl<<"`````````"<<endl; 
    	 }
    	else 
    	{
    		cout<<"猜想错误"<<endl<<"`````````"<<endl; 
        }
        
        return 0; 
    }
    

    其他

    ERROR:taking address of temporary

    *this的对象构建完后会马上被销毁,是一个暂时的对象

    资料

    C++中this与*this的区别

  • 相关阅读:
    美团DSP
    pid稳态控制
    Tensorflow的gRPC编程(一)
    信息增益,信息增益率
    tensorflow dnn 参考
    java tfserving grpc 通信调用代码解析 【重点参考】
    Saltstack module dnsmasq 详解
    Saltstack module django 详解
    Saltstack module disk 详解
    Saltstack module dig 详解
  • 原文地址:https://www.cnblogs.com/BeautifulWater/p/14818542.html
Copyright © 2011-2022 走看看