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
.
归档时间: |
|
查看次数: |
1426 次 |
最近记录: |