我认为定义单个参数构造函数explicit
是一种很好的做法,以避免隐式转换。我理解将int值提升为class对象的缺陷。我想知道它是否也适用于接受引用类型的构造函数。在这种情况下,如何引发隐式转换:
class Foo
{
public:
Foo(Bar& bar) { }
};
如果构造函数接受指针,情况是否会发生变化,是否可能从NULL
和nullptr
进行转换?
class Foo
{
public:
Foo(Bar* bar) { }
};
答案 0 :(得分:2)
两者都是。带签名的函数
void acceptFoo(const Foo& foo)
如果您在那里传递Foo
,将使编译器创建Bar
。
0
和nullptr
相同。