【问题标题】:Explicit modifier for constructors taking reference argument采用引用参数的构造函数的显式修饰符
【发布时间】:2015-09-10 10:07:48
【问题描述】:

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

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

如果构造函数接受指针,情况是否会改变,是否可以从NULLnullptr 转换?

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

【问题讨论】:

    标签: c++ implicit-conversion explicit


    【解决方案1】:

    两者都是。带签名的函数

    void acceptFoo(const Foo& foo)
    

    如果你在那里传递Bar,编译器会创建一个Foo

    0nullptr 相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      相关资源
      最近更新 更多