C 引用新發現

2021-07-09 11:31:28 字數 1499 閱讀 5094

今天在《c++ primer plus》上學習模板的時候看到了這樣一段**(簡化版):

#include

#include

#include

#include

using namespace std;

template

class pair

template

t1 & pair::first()

return a;

template

t2 & pair::second()

return b;

int main()

pairr[2]=;

r[0].first()="jyh";

r[0].second()=6;

cout

執行結果是「jyh 6」

當時很疑惑,為什麼值改變了。後來寫了個普通類測試一下:

#include

using namespace std;

class a

public:

int num;

int &haha();

a(int n)

num=n;

int & a::haha()

return num;

int main()

at1(3);

t1.haha()=4;

cout結果為4

說明普通類也是一樣的。

然後又寫了沒有類的普通程式測試一下:

#include

using namespace std;

int &haha(int a)

return a;

int main()

int a=3;

haha(a)=4;

cout執行結果為3

值並沒有改變。

然後我就想這事為什麼呢?先開始不明白,後來想試試引用傳遞吧。就試了試:

#include

usingnamespace std;

int&haha(int &a)

intmain()

執行結果為4

值也改變了。

於是我明白了,其實是因為引用傳遞傳遞的是位址,如果值傳遞傳遞的只是副本而已。所以加了引用以後值就改變。

#include

using namespace std;

class a

public:

int num;

int haha();

a(int n)

num=n;

int a::haha()

return num;

int main()

at1(3);

t1.haha()=4;

cout提示出錯了。

AjaxPro新發現 四 拾零

錯誤處理 當ajax呼叫發生錯誤時,函式引數result會存在error屬性,通常通過這個屬性判斷是否出現錯誤.function ondivcomplete result 也可以使用預設處理函式,這樣就可以為錯誤處理提供統一的函式 ajaxpro.onerror function error 超時處...

WORD中的新發現

ctrl alt s 可以 變成雙開哦 這樣在編輯文件時很方便,也是乙個簡單的發現,相信這不是什麼新東西,只想拿出來說說,下面是我查過資料後,更加豐富的快捷鍵 alt ctrl s 拆分文件視窗 alt shift c 撤消拆分文件視窗 home 移動到內容的開始 end 移動到內容的最後 左箭頭鍵...

新發現 SandJacking iOS攻擊技術

安全專家已經確認了一種新的ios攻擊方法,名為sandjacking。它允許能拿到裝置的攻擊者在上面安裝惡意應用程式。sandjacking是目前ios安全面臨的問題之一。sandjacking簡介 安全研究員michael cobb發現了一種新的ios攻擊技術,名為sandjacking,它通過利...