C++显式构造函数,需要一个指针
问题描述:
我最近偶然发现了一个接收单个指针参数的显式构造函数。我想知道在这种情况下是否需要明确的关键字?因为没有指针的构造函数,所以不能有任何隐式转换。C++显式构造函数,需要一个指针
class Foo {
public:
explicit Foo(int* int_ptr);
}
答
以下代码:
void f(Foo) {}
int main()
{
int* p;
f(p);
}
失败并
explicit
进行编译。高兴地编译没有它。
为什么指针是任何其他构造函数的参数有什么不同? – juanchopanza
是否需要“显式”是另一回事,与参数是指针无关。它与你想要允许的隐式转换有关。 – juanchopanza