Kyl*_*yle 7 c++ unique-ptr c++11
我不清楚它的好处是什么.
如果我有:
Foo* foo = nullptr;
std::unique_ptr<Foo> unique_foo(foo);
Run Code Online (Sandbox Code Playgroud)
在那种情况下是否调用了nullptr_t构造函数?或者只有你这样做:
std::unique_ptr<Foo> unique_foo(nullptr);
Run Code Online (Sandbox Code Playgroud)
谢谢!
有一些讨论,这里是让你来传递nullptr_t,否则将无法编译,因为它不会转换为指针类型.所以我的问题可能是为什么它不投?
Pra*_*ian 13
一个可能的原因是unique_ptr接受unique_ptr::pointer参数的构造函数是explicit.这意味着在没有unique_ptr(nullptr_t)构造函数的情况下,以下代码将无法编译.
std::unique_ptr<int> intp = nullptr;
Run Code Online (Sandbox Code Playgroud)
由于a unique_ptr旨在成为一种轻量级智能指针,它非常模仿原始指针语义,因此需要编译上述代码.
在第一个示例中,nullptr_t未调用构造函数,因为参数的类型是Foo*,即使其值为nullptr.