今天在《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,它通過利...