在下面的例子中,应该调用哪个转换函数?为什么要选择那个而不是另一个?
struct A
{
operator int();
operator int*();
};
A x;
int i = x + 1;
编译器选择operator int()
.. 但为什么呢?
以下是 C++03 的一些相关引用:
来自 [expr.add]
此外,两个操作数都应具有算术或枚举类型,或者一个操作数应是指向完全定义的对象类型的指针,而另一个应具有整数或枚举类型。
来自 [转化]
具有给定类型的表达式将在几个上下文中隐式转换为其他类型:
- 用作运算符的操作数时。操作员对其操作数的要求决定了目标类型