gpt4 book ai didi

c++ - 为什么期望 std::shared_ptr 的显式构造函数接受 nullptr?

转载 作者:行者123 更新时间:2023-11-27 23:07:12 25 4
gpt4 key购买 nike

以下代码在 gcc 4.8.1 下编译良好

#include <memory>

class Foo {
public:
explicit Foo(const std::shared_ptr<Foo>& foo) {

}
};

int main() {
Foo foo(nullptr);
}

为什么这是可能的?显式不应该阻止编译器隐式调用 std::shared_ptr(nullptr) 吗?

最佳答案

Shouldn't the explicit prevent the compiler from calling std::shared_ptr(nullptr) implicitly?

不,显式构造函数会阻止这种情况发生:

Foo foo = some_shared_ptr;

它对 shared_ptr 的构造函数没有影响,因此从 nullptrshared_ptr 的隐式转换仍然是允许的。

关于c++ - 为什么期望 std::shared_ptr 的显式构造函数接受 nullptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22824891/

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