C ++中具有不同数据类型的运算符重载

时间:2019-04-01 11:10:36

标签: c++ operator-overloading

以这个为例:

float operator+(int a, float b)
{
   Return b + (float)a;
}

void main()
{
    int a = 10;
    float b = 2.5f;
    float c;

    c = a + b; //works as intended
    c = b + a; //results in type mismatch error
}

所以我的问题是: 有没有一种方法可以使参数在不定义第二个函数的情况下被双向接受?

2 个答案:

答案 0 :(得分:2)

不可能为基本类型重载运算符。 您只应为已定义的类重载运算符。

为您自己的类对称地用异构参数重载二元运算符的一种解决方案是定义第一种类型的运算符,并使第二种类型隐式转换为第一种类型。

答案 1 :(得分:-1)

使用浮点数'a'代替int'a',默认情况下,当添加int数以使其浮点时,它会自动分配更高的精度。 (整数+浮动结果变为浮动)