c++ - 由于在 C++ 中有两种定义转换的方法,当同一个转换有两种可能性时,它们如何交互?

标签 c++ implicit-conversion conversion-operator

我只是在寻找有关 C++ 工作原理的说明,这并不是真正要解决我的代码中的特定问题。

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

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

operator B() {
   // code
}

如果您是 B 的作者,您可以在 B 中添加如下内容:
B(const A &a) {
    // code
}

如果我理解正确,其中任何一个都将允许 A 隐式转换为 B。那么如果两者都定义了,使用哪一个?这还允许吗?

注意:我知道您可能永远不会遇到这样做的情况。您可以使构造函数显式,或者更有可能只有两者之一。我只是想知道 C++ 规范说了什么,我不知道如何查找。

最佳答案

[C++11: 12.3/2]: User-defined conversions are applied only where they are unambiguous. [..]



12.3 继续列出您确定的两种类型。

关于c++ - 由于在 C++ 中有两种定义转换的方法,当同一个转换有两种可能性时,它们如何交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22444415/

相关文章:

C++ OpenGL 创建发光线

c++ - 防止将字符串文字转换为 bool 与 std::string

C++ 重载解析、转换运算符和 const

c++ - 指针转换,无法将 Two* 转换为 One*

C++:重载运算符=

记录器库中 POD 类型的 C++ 模板特化

c++ - cout << setw 没有与 åäö 正确对齐

php - C++ 应用程序在几个小时后崩溃

c - C中的隐式转换?

Scala 编译器对泛型参数没有任何推断