C++ explicit constructor that takes a pointer
我最近偶然发现了一个显式构造函数,它接收一个单指针参数。我想知道在这种情况下是否需要显式关键字?因为指针没有构造函数,所以不能有任何隐式转换。
1 2 3 4
| class Foo {
public:
explicit Foo(int* int_ptr);
} |
- 为什么指针不同于任何其他构造函数参数?
- explicit是否必要是另一回事,与作为指针的参数无关。这与您希望允许的隐式转换有关。
以下代码:
1 2 3 4 5 6 7
| void f(Foo) {}
int main()
{
int* p;
f(p);
} |
godbolt.org上的实时示例