内置类型的运算符函数

时间:2018-06-10 10:35:25

标签: c++ operators

如何为内置类型定义的运算符显式使用基础运算符函数?见代码:

struct Int
{
    Int() = default;
    Int(int initial)
    {
        i = initial;
    }

    Int operator+(Int other)
    {
        return Int(i + other.i);
    }

    int i;
};

std::ostream& operator<< (std::ostream &out, const Int& data)
{
    out << data.i;
    return out;
}

int main()
{
    Int a, b = 5, c = 5;
    a = b + c;

    std::cout << a << std::endl;

    Int d, e = 5, f = 5;
    d.operator=(e.operator+(f));  // possible with user defined types

    std::cout << d << std::endl;

    int g, h = 5, j = 5;
    g.operator=(h.operator+(j));  // illegal

    return 0;
}

标有“非法”的部分&#39;产生以下错误:

  

请求会员&#39;运营商+&#39;在&#39; h&#39;,这是非类型&#39; int&#39;

我知道你不能在int上调用一个方法,这是非类型的。问题在于定义了运算符+的含义,以及是否可以明确地使用它。

1 个答案:

答案 0 :(得分:2)

  

如何为内置类型定义的运算符显式使用基础运算符函数?

你不能。

如果您正在寻找标准的相关部分,那么它应该是:

  

16.5重载运算符

     

6运算符函数应该是非静态成员函数或   是一个非成员函数,至少有一个类型为的参数   类,对类的引用,枚举或对引用的引用   枚举。