Re: [問題] c++的constructor使用問題

看板C_and_CPP (C/C++)作者 (我要加入劍道社!)時間16年前 (2009/04/01 09:30), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《KATORU (歡迎加入NHK!!!)》之銘言: : compiler後, error問題都會在if (obj.getDollar())這行 : 說明是說"obj沒有宣告" : 然後我看了一下, 問題似乎都在這個if判斷式 : if (max<=0) : { Counter obj; system ("cls");} : else : { Counter obj(max); system ("cls");} : 我將這整段if else都拿掉, 改成Counter obj; 之後 : compiler就會過了... : 想請問一下這邊是本來就不能這樣用嗎!? : 還是我忘記定義什麼...@@ : 謝謝 話說,這個問題可以用 RVO 來解決 inline Counter CreateCounter(int max) { if(max <= 0) return Counter(); else return Counter(max); } int main() { ... Counter obj = CreateCounter(max); ... } 或著說你這樣寫: Counter obj = ( max <= 0 ? Counter() : Counter(max) ); 我用 gcc 測過 兩者都不會多出額外的 copy constructor 這個方法會比 new 還快,而且安全 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.151.2
文章代碼(AID): #19qiF2EY (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19qiF2EY (C_and_CPP)