我有以下代码:
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
时没有调用析构函数。这是在 c++ 标准中定义的,还是仅仅是一些仅存在于 VC++ 上的优化?我可以依靠在这种情况下跨平台调用的析构函数吗?getBalls()
monkey()
谢谢