采用指针的 C++ 显式构造函数

C++ explicit constructor that takes a pointer

我最近偶然发现了一个接收单个指针参数的显式构造函数。我想知道在这种情况下是否需要 explicit 关键字?因为没有指针的构造函数,所以不能进行任何隐式转换。

class Foo {
 public:
  explicit Foo(int* int_ptr);
}

以下代码:

void f(Foo) {}

int main()
{
    int* p;
    f(p);
}
  • 使用 explicit 编译失败。

  • 没有它也能顺利编译。

live example on godbolt.org