gpt4 book ai didi

c++ - 复制构造函数和函数返回临时值

转载 作者:太空宇宙 更新时间:2023-11-04 16:22:30 25 4
gpt4 key购买 nike

我有以下代码:

    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 调试器,我注意到当 getBalls()monkey() 构造函数中返回时,balls 析构函数没有被调用.这是在 c++ 标准中定义的还是仅存在于 VC++ 上的一些优化?在这种跨平台的情况下,我可以依赖未调用的析构函数吗?

谢谢

最佳答案

您遇到了复制省略,这是一种定义明确的机制。不执行不必要的复制取决于实现。

关于c++ - 复制构造函数和函数返回临时值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15315419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com