考虑以下代码,为什么我不能使用 这里的赋值符号,为什么认为是隐式转换。
shared_ptr<string> pNico = new string("nico"); // ERROR implicit conversion
shared_ptr<string> pNico{new string("nico")}; // OK
最佳答案
构造函数是明确的,以防止有人做这样的事情:
void foo(std::shared_ptr<std::string> s) { }
int main()
{
std::string s;
foo(&s);
}
如果它是隐式的,shared_ptr
可以获取堆栈分配变量的所有权并尝试删除它..这是没有意义的。
关于c++ - shared_ptr 赋值符号隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37490139/