带参考参数的构造函数的显式修饰符

时间:2015-06-24 09:19:48

标签: c++ implicit-conversion explicit

我认为定义单个参数构造函数explicit是一种很好的做法,以避免隐式转换。我理解将int值提升为class对象的缺陷。我想知道它是否也适用于接受引用类型的构造函数。在这种情况下,如何引发隐式转换:

class Foo
{
public:
    Foo(Bar& bar) { }
};

如果构造函数接受指针,情况是否会发生变化,是否可能从NULLnullptr进行转换?

class Foo
{
public:
    Foo(Bar* bar) { }
};

1 个答案:

答案 0 :(得分:2)

两者都是。带签名的函数

void acceptFoo(const Foo& foo)
如果您在那里传递Foo

将使编译器创建Bar

0nullptr相同。