次のコードがあります。
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()
ありがとう