相关疑难解决方法(0)

由于有两种方法可以在C++中定义转换,当同一转换有两种可能性时,它们如何相互作用?

我只是想澄清C++是如何工作的,这不是关于解决我的代码中的特定问题.

在C++中,您可以说类型A应该以两种不同的方式隐式转换为类型B.

如果您是A的作者,可以在A中添加这样的内容:

operator B() {
   // code
}
Run Code Online (Sandbox Code Playgroud)

如果您是B的作者,可以向B添加这样的内容:

B(const A &a) {
    // code
}
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,其中任何一个都将允许A隐式转换为B.所以,如果两个都被定义使用哪一个?这甚至是允许的吗?

注意:我知道您可能永远不会遇到这种情况.您可以使构造函数显式,也可以只使用两者中的一个.我只是想知道C++规范说的是什么,我不知道如何看待它.

c++ conversion-operator implicit-conversion

7
推荐指数
1
解决办法
126
查看次数