运算符重载要在另一个类中使用的一个类

时间:2013-09-20 19:21:48

标签: c++

说我有一个班级

class var1
{
   int a;
   int b;

}
var1 var1::operator+(var1 passed)
   {   
       var1 Result;

       Result.a = a + passed.a;
       Result.b = b + passed.b;

       return Result;
   }

现在我可以在Main中进行简单的重载。但是我如何在另一个班级重载。

class var2
{
   public:
         var1 res;
         var1 res2;
}
void var2::add()
{
   var1 temp;
   temp = res + res2;
}

1 个答案:

答案 0 :(得分:1)

要提供有关您可能尝试执行的操作的更多信息,请参阅以下示例:

class var1
{
    int a, b;

public:
    var1 operator+( const var1& rhs )
    {
        var1 output;

        output.a = this->a + rhs.a;
        output.b = this->b + rhs.b;

        return output;
    }
};

class var2
{
    var1 res1, res2;
public:
    var2 operator+( const var2& rhs )
    {
        var2 output;

        output.res1 = this->res1 + rhs.res1;
        output.res2 = this->res2 + rhs.res2;

        return output;
    }
};

这不是重载,但根据您的代码,似乎这可能是您要完成的任务。如果您在问题中添加更多细节,我可以根据您的需求更好地定制答案。

为了解释这个例子,因为在var1中定义了加法运算符,它可以用来对var2的各个字段求和。通过在var2上定义自己的加法运算符,您可以使用var1中定义的运算符来执行部分的逻辑求和并返回结果。这是重载或覆盖任何内容,因为这两个类彼此没有关系。

有关C ++中运算符重载的更多信息,请read this on SO