这些构造函数是否正确?
它们是否形成良好并且正确地重载了左值和右值?
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))}
{}
答案 0 :(得分:0)
Obj(std::string const & p_data) : data {std::make_shared<std::string>(p_data)} {}
您确定要从std::string
到Obj
进行隐式转换吗?如果不,请考虑制作构造函数explicit
:
// Prevent *implicit* conversions from std::string to Obj
explicit Obj(std::string const& p_data)
: data{std::make_shared<std::string>(p_data)}
{}