看板 C_and_CPP 關於我們 聯絡資訊
有個class 的 constructor 為: wxWindow(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0; const wxString& name = wxT("panel")); 產生一個instance就: wxWindow* win = new wxWindow(parent,wxID_ANY, wxPoint(100, 100), wxSize(200, 200)); 想問的是,『wxPoint(100, 100)』這樣寫就會有物件產生嗎?否則怎麼被 const wxPoint& pos 給 reference? 請各位大大給予指點了 (觀念不夠清楚orz/// -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.71.110 ※ 編輯: kevintwo 來自: 140.113.71.110 (09/15 21:32)
dendrobium:暫時物件 09/15 21:36
再請問一下,下面的是錯在哪呢? (1) const string& ref2 = string("hala"); (2) const vector<int>& ref = vector<int>(); ※ 編輯: kevintwo 來自: 140.113.71.110 (09/15 22:13)
kevintwo:是我搞錯了,沒有問題 09/15 22:27
kevintwo:把warning 誤為error 09/15 22:27
kevintwo:謝謝d大了 09/15 22:28
dendrobium:最好不要忽略warning...@@a 09/15 22:29
kevintwo:warning 是說我沒使用到這個變數,應該沒關係吧? 09/15 22:36
QQ29:有人可以解釋 直接傳暫時物件效率會比較高嘛?? 09/15 22:38
QQ29:不然這樣寫有什麼好處呢@@"? 09/15 22:39
kevintwo:樓上問了我也想問的問題了^^a 09/15 23:07
QQ29:不過我測試結果 class A; A a=A(); 和A a();一樣的意思.. 09/15 23:24
QQ29:好像一樣 至於用ref 只是為了減少再copy而以嘛? 09/15 23:25
dendrobium:A a=A() 並不會產生暫時物件... 編譯器很聰明的 09/16 00:36
littleshan:A a(); 是宣告一個 function...這邊很多人會弄錯 09/16 00:41
littleshan: const string& ref2 = string("hala"); 是錯誤用法 09/16 00:44
littleshan:因為暫時物件會馬上解構 所以你的 ref 會指向垃圾 09/16 00:45
QQ29:little大 不會耶 他不會馬上解構 我用VC8測的 09/16 00:59
QQ29:他好像和用這樣寫const string& ref2("hala");一樣... 09/16 01:01
dendrobium:應該說是不知道哪時候解構 唯一確保的是只在該statemen 09/16 01:01
dendrobium:t會在, 09/16 01:02
QQ29:但是如果寫const string& ref2("hala");有沒有加ref有差別嘛? 09/16 01:03
QQ29:那這樣原波文章 的寫法 他傳到函式用ref接的寫法是錯誤的嘛? 09/16 01:04
james732:我常常搞不懂reference的使用時機 orz 09/16 01:11