我有下面的代碼:拷貝構造函數和函數返回的臨時
struct balls
{
int mNumBalls;
~balls();
};
inline balls::~balls()
{
// is not called in VS2010 when getBalls returns in monkey constructor
}
balls getBalls()
{
balls myBalls;
myBalls.mNumBalls = 5;
return myBalls;
}
struct monkey
{
balls mBalls;
monkey();
};
inline monkey::monkey() : mBalls(getBalls())
{
}
通過在VS2010調試器步進,我注意到balls
析構函數不是調用時getBalls()
回報在monkey()
構造。這是在C++標準中定義還是僅僅在VC++上存在的一些優化?在這種情況下,我可以依賴不被調用的析構函數跨平臺嗎?
感謝
'getBalls(){balls myBalls;返回myBalls; }''猴子{球m球; }'...大聲笑 – 2013-03-09 20:23:34
更新,開心? :p – KaiserJohaan 2013-03-09 20:24:54
我很高興與原始版本。任何讀「猴子球」的代碼都會給我的臉帶來微笑。 – 2013-03-09 20:31:11