关于实例化:带有指针的C ++显式构造函数

C++ explicit constructor that takes a pointer

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
class Foo {
 public:
  explicit Foo(int* int_ptr);
}


以下代码:

1
2
3
4
5
6
7
void f(Foo) {}

int main()
{
    int* p;
    f(p);
}
  • 无法用explicit编译。

  • 很高兴没有它编译。

godbolt.org上的实时示例