如何在派生类中实现“ operator + =“?

时间:2018-07-09 22:10:16

标签: c++ c++11 operator-overloading

给出以下类别:

class A { 
int a;
public:
//..
};

class B : public A {
int b;
public:  
//.....
};

如何在operator+=中实现class B,以便在给定B b1(.. , ..);B b2(.. , .. );的情况下,如果我愿意b1+=b2;,那么我将进入{{1} }他的字段的以下值:

  

b1.a = b1.a + b2.a, b1.b = b1.b + b2.b

在以下情况下:

b1

我的问题是如何获得class A { protected: int a; public: //.. }; class B : public A { int b; public: B& operator+=(const B& bb){ this->a += bb.a; // error.. this->b += bb.b; return *this; }; ..的字段?

1 个答案:

答案 0 :(得分:3)

A自己的operator+=!然后,您只需从B调用它即可:

class A { 
private:
    int a;
public:
    A(int a) : a(a) { } 

    A& operator+=(const A &other) {
        a += other.a;
        return *this;
    }   
};

class B : public A { 
private:
    int b;
public:
    B(int a, int b) : A(a), b(b) { } 

    B& operator+=(const B &other) {
        A::operator+=(other);
        b += other.b;
        return *this;
    }   
};

请参见工作示例here(ideone链接)。