c++ - 这些构造函数是否正确?

标签 c++ c++14 move shared

这些构造函数是否正确?

它们的左值和右值是否格式正确且正确重载?

std::shared_ptr<std::string> data;

// lvalue constructor
Obj(std::string const & p_data)
    : data {std::make_shared<std::string>(p_data)}
{}

// rvalue constructor
Obj(std::string && p_data)
    : data {std::make_shared<std::string>(std::move(p_data))}
{}

最佳答案

我觉得不错。

在 move 构造函数中,std::move(p_data) 是必需的,因为p_data 是一个左值。

关于c++ - 这些构造函数是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40937365/

相关文章:

C++14 转换为成员函数的返回类型 - 简洁版本

c# - 在 C# 中 move 鼠标(坐标单位)

c++ - 如何使用 std:move 和 back inserter 将 std::list 中的元素 move 到末尾?

c++ - 是否有用于在 XP 的双 View 或克隆桌面设置之间切换的 c/c++ 多显示器库?

c++ - 为什么只有有效的空可变参数包的模板格式错误?

c++ - STL bitset::count() 方法的性能如何?

c++ - 一个函数可以有两种不同的返回类型吗?

c++ - 是否存在 int 成员保证零初始化的情况?

c++ - 在 C++ 中调用作为参数传递的同一模板函数的两个版本

c++ - 在 lambda 捕获的对象中选择 move 构造函数