-11

说我有课

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;
}
4

1 回答 1

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++ 中运算符重载的更多信息,请在 SO 上阅读此内容

于 2013-09-20T19:54:39.833 回答