gpt4 book ai didi

c++ - 为什么 unique_ptr 有一个 nullptr_t 构造函数?

转载 作者:可可西里 更新时间:2023-11-01 18:15:54 28 4
gpt4 key购买 nike

我不清楚有什么好处。

如果我有:

Foo* foo = nullptr;
std::unique_ptr<Foo> unique_foo(foo);

在那种情况下是否调用了 nullptr_t 构造函数?或者仅当您这样做时:

std::unique_ptr<Foo> unique_foo(nullptr);

谢谢!

有一些讨论here这是为了允许你传入 nullptr_t,否则它不会编译,因为它不会转换为类型指针。所以我的问题可能是为什么它不转换?

最佳答案

一个可能的原因是采用unique_ptr::pointer 参数的unique_ptr 构造函数是显式。这意味着在没有 unique_ptr(nullptr_t) 构造函数的情况下,以下代码将无法编译。

std::unique_ptr<int> intp = nullptr;

由于 unique_ptr 旨在成为一种轻量级智能指针,它非常模仿原始指针语义,因此希望编译上述代码。


在您的第一个示例中,未调用 nullptr_t 构造函数,因为参数的类型是 Foo*,即使它的值是 nullptr .

关于c++ - 为什么 unique_ptr 有一个 nullptr_t 构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25498274/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com