繁体   English   中英

C ++-函数结束和局部销毁顺序

[英]C++ - function end and local destruction order

我有以下代码:

class Class
{
public:
    std::string Read()
    {
        std::lock_guard<std::mutex> lock(mutex_);
        return data_;
    }

private:
    std::mutex mutex_;
    std::string data_;
};

首先将执行什么-作为该函数的结果,将在堆栈上创建data_字符串的本地副本(临时副本),然后该锁释放互斥体,或者是其他方式?

如果是这样,下面的代码是否可以解决问题?

return std::string(data_);

互斥对象应该保护data_并发读/写,以使这些操作不会受到干扰。

该函数将data_作为右值返回,因此此处的结果将在执行lock的析构函数(函数退出)并释放mutex_ lock之前从data_成员计算得出。

  • 是否在释放互斥锁之前计算了临时值(返回值)? 是。
  • return std::string(data_); 需要? 没有。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM