return *this 與return this分別是什么,有什么區別


學習了該博客http://blog.csdn.net/stpeace/article/details/22220777   加上自己的理解

this是個指針,存在於類的非靜態成員函數內部,return this 返回的是指向該對象的指針,或 返回的是當前該對象的地址。

return *this 返回當前對象的引用,或者說返回該對象本身 還是當前對象的克隆

代碼整理了一下,根據輸出地址是否相同來判斷是對象本身還是對象的克隆:

#include <iostream>  
using namespace std;  

class A  
{  
public:  
	A(int a = 1, int b = 1):x(a),y(b) 
	{ }
	  
	A &get() 
	{
		return *this;
	}  
private:
	int x;
	int y;
};  

int main()  
{  
	A a(1,2);
	cout << &a << endl;
	cout << &a.get() <<endl;  
}  

 輸出地址為: 地址一模一樣,說明這兩者是a 和 get函數返回的 *this 是同一個東西。

如果將

A &get() 
    {
        return *this;
    }  
改為
A get() 
    {
        return *this;
    }  

則 輸出地址為 ,兩者地址不一樣,即a 和 return *this 地址不一樣,但是所含數據一樣,說明返回 是a 對象的一個拷貝,在空間中另一塊地方存着和a相同數據的對象。

 

但是,如果get()的返回類型是內置類型,如int,該怎么證明 return *this ,是對象的拷貝還是對象本身?

目前的思路是 return *this 的返回類型是 A ,而 this 的返回類型是A *, 但int get()的返回類型是int,如何從int類型轉換成A類型,有沒有這種轉換,好像沒有啊。。。。 但是int get()中確實存在this指針,這個this指針指向

調用該函數的對象,但是 *this 究竟是該對象本身呢,還是該對象的拷貝呢,目前還沒驗證出來。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM