return *this和return this
看到書中的return *this比較疑惑,查詢過後總結如下。
class temp
{
...;
}
假如定義temp *get(){return this;}
,那麼返回的this就是地址,即返回一個指向物件的指標
假如定義temp get(){return *this;}
那麼返回的就是物件的克隆,是一個臨時變數
假如定義temp &get(){return *this;}
那麼返回的就是物件本身
例如:
#include<iostream>
using namespace std;
class A
{
public:
int x;
A get()
{
return *this;
}
};
int main()
{
A a;
A b;
a.x = 4;
if( a.x == a.get().x )
{
cout << "asasas ";
cout << a.x << endl;
}
else
{
cout << "no " << a.get().x << endl;
}
b = a.get();
cout << &b << " " << &a << endl;
cout << "b == " << b.x << endl;
return 0;
}
輸出結果為
asasas 4
0x7ffdcfbb6650 0x7ffdcfbb6640
b == 4
綜上所述,return *this 返回的是物件的本身或克隆(具體看函式宣告),return this 返回指標
這裡我還犯過錯誤,在敲上述程式碼時,我試圖看看返回的克隆物件的地址,即敲了&a.get();
這樣的語句,結果是錯誤的,因為該函式返回物件的克隆,即一個臨時變數,而臨時變數的記憶體地址是不可取得的
相關推薦
return *this和return this有什麼區別
return *this返回的是當前物件的克隆或者本身(若返回型別為A, 則是克隆, 若返回型別為A&, 則是本身 ); return this返回當前物件的地址(指向當前物件的指標)。this指標裡面存放的是當前物件的地址。 #include <iostream> us
今天看到的一個有趣面試題:return *this和return this有什麼區別?
別跟我說, return *this返回當前物件, return this返回當前物件的地址(指向當前物件的指標)。 正確答案為:return *this返回的是當前物件的克隆或者本身(若返回型別為A, 則是克隆, 若返回型別為A&, 則是本
return *this和return this
看到書中的return *this比較疑惑,查詢過後總結如下。 class temp { ...; } 假如定義temp *get(){return this;},那麼返回的this就是地址,即返回一個指向物件的指標 假如定義temp get(
C++ 中 return this 和 return *this 的區別
我們都知道c++ this指標的概念(可參考),this指標說白了就是存放當前物件的地址;那麼 我們可以理解為 *this為去改指標的內容即是當前的物件,所以return *this 返回的應該是當前的物件本身或者說是該物件的克隆 ;而this既然為指標,改指標指向的是
return *this和return this有什麼區別?
別跟我說, return *this返回當前物件, return this返回當前物件的地址(指向當前物件的指標)。 正確答案為:return *this返回的是當前物件的克隆或者本身(若返回型別為A, 則是克隆, 若返回型別為A&, 則是本身
this和$(this)的區別到底在哪裏
返回值 -1 query http log 點擊 對象 jquery logs this是一個神奇的東西 加完點擊事件他就是此時點擊的那個元素 加完鍵盤事件的話他就是。。。。。。 總之他就是很神奇, 從返回值來講的話 this返回的是一個HTML對象 所以可以調用HT
js跳出循環的方法區別( break, continue, return ) 及 $.each 的(return true 和 return false)
als onsubmit scrip case語句 成語 clas 輸入 結束 而在 js編程語法之break語句: break語句會使運行的程序立刻退出包含在最內層的循環或者退出一個switch語句。 由於它是用來退出循環或者switch語句,所以只有當它出現在這些語句時
javascript中的 return false和return true
關於javascript中的 return false和return true,return 是javascript裡函式返回值的關鍵字,一個函式內處理的結果可以使用return 返回,這樣在呼叫函式的地方就可以用變數接收返回結果。return 關鍵字內任何型別的變數資料或表示式都可以進行返回,甚至什麼都不返
Springmvc中的return modelAndView和return "xxxx"的區別
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property nam
return,抽象類與介面,物件序列化機制,this和super,識別符號,break和continue以及return,final,finally和finalize
(2)介面中定義的成員變數預設為public static final,只能夠有靜態的不能被修改的資料成員,而且,必須給其賦初值,其所有的成員變數只能被public,abstract這兩個關鍵字修飾。抽象類可以有自己的成員變數,還可以有非抽象的成員方法,抽象類的成員變數預設為de
javascript ------->this 和json
javascript function private person public <!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>this+
break、continue和return的區別
sans spl src cnblogs 繼續 也會 for size 分享 1.break:跳出當前循環 01.作用: 001.只能在循環體內和switch語句體內使用break語句 002.使用break只能跳出當前的循環體或者是當前的switch語
this 和 $(this) 的區別
.com .cn style alt font 區別 cnblogs alert 分享 沒事就alert一下 this 和 $(this) 的區別
jQuery的 this和$(this)
tab 循環 amp ole .text lin 原生 我想 for 今天剛剛遇到的問題,用jquery主要的目的是想匹配一個標簽內的字符串後執行幾個操作 1 {loop $qq_result $activity} 2 <dd&g
java中 this和super的差別
屏蔽 code args mod -h ans 使用 -a oid this表示當前調用方法的對象的引用: (誰調用這種方法,誰就是這個對象,這個this就是它的引用) 比方:<pre name="code" class="j
Java中this和super的用法總結
return 類繼承 xtend chinese ati -s sha blog 定義 在JAVA類中使用super來引用父類的成分,用this來引用當前對象。 如果一個類從另外一個類繼承,我們new這個子類的實例對象的時候,這個子類對象裏面會有一個父類對象。怎麽去引用裏面
javascript創建對象和方法(this)
data- 函數 ava this ict 繼承 tro blank wiki 1.創建對象: 參考鏈接 記住:JavaScript的原型鏈:所有對象都是實例,所謂繼承關系就是將一個對象的原型指向另一個對象。 2.方法(this詳解): 參考鏈接 記住:this指針
java中this 和 super關鍵字的作用
etag 傳遞 記錄 ont this spa 根據 普通 void emmmmmm也真的是好久沒有寫過java了,因為項目需要, 最近又必須重新拾起來了,雖然好多東西也都忘得差不多了.... 然後發現 竟然把super和this傻傻分不清.... 開個帖子記錄一下: 一、
React:JS中的this和箭頭函數
-c c++ upload per 初始 正常 develop pan pre JS中的this和純面向對象(java,c++)中的this有點不大一樣,其原因就是作用域不同,導致JS中的this的指向不明確,在java中的this指當前對象的this或當前類的this,在
jquery裏$(this)和this的區別在哪
addclass 調用 cti OS dom節點 att query lis attr 下面兩段代碼在jquery的官網見到的,何時用$(this),又何時用this呢? $(document).ready(function() { $("#orderedlist