繁体   English   中英

我们需要使用指针类型的CTOR显式吗?

[英]Do we need explicit for CTOR with pointer type?

在这种情况下,我们是否需要explicit

class A
{
    explicit A(B* b);
};

我认为,即使我们不将构造方法标记为explicit ,编写它也会出现编译错误:

A a = new B(); 

从指针到对象的隐式转换根本不可能通过构造函数实现,对吗?

它将无法编译从B*A转换将失败。

这正是显式将阻止的事情。

您应该只写A a( new B() ); 在这种情况下,或者如果您想变得冗长,可以写A a = A( new B() );

关于根本问题:您是否需要,取决于您和您的团队。 通常,一个主要问题是:您是否将拥有一个'int'构造函数(会导致*类型的歧义),您想发生什么以及是否希望从构造参数进行隐式转换。

如果您不希望该构造函数用于隐式转换,则确实需要explicit式。 完全有可能使基于构造函数的隐式转换接受一个指针。

我们需要使用指针类型的CTOR显式吗?

如果您在团队中工作,则取决于您和您的团队。 它比任何其他内容更像是编码指南。 语言没有强制要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM