Re: [問題] c++的constructor使用問題
看板C_and_CPP (C/C++)作者littleshan (我要加入劍道社!)時間16年前 (2009/04/01 09:30)推噓0(0推 0噓 0→)留言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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章