c++ - 在成员引用中存储 move 的对象是否安全?

标签 c++ c++11 reference move-semantics

以下代码安全吗,或者在构造 C 后,m_s 可能是悬空引用?

class C {
public:
    C(string&& s) : m_s{s} {} 
private:
    string& m_s;
};

最佳答案

不,这不安全,请考虑以下示例:

C c(std::string("42"));

在构造函数中传递一个临时值。这样您就可以创建一个悬空引用。

关于c++ - 在成员引用中存储 move 的对象是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36198764/

相关文章:

函数作为参数的 C++ 错误,对非常量的引用的初始值必须是左值

C++ - 使用 <class T> 而不是 <typename T> 有什么意义吗

c++ - 指针 vector 。 BOOST序列化

c++ - snprintf : Same code - different errors/warnings on different g++ compilers

C++11 右值和 move 语义混淆(return 语句)

c++ - C++ 中的循环类型依赖死锁

javascript - 删除 Mongo 文档及其所有引用?

c++ - LD_PRELOAD 带有多个源文件

c++ - 编辑标题时处理编译时间

c++ - 引用表达式的求值