#include <iostream>
class A {
private:
int a;
public:
A(int a) : a(a) { }
void print() { std::cout << 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) { }
void print() {
std::cout << '(';
A::print();
std::cout << ", " << b << ')' << std::endl;
}
B& operator+=(const B &other) {
A::operator+=(other);
b += other.b;
return *this;
}
};
int main() {
B b1(1, 2);
B b2(3, 4);
b1.print();
b1 += b2;
b1.print();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQSB7IApwcml2YXRlOgogICAgaW50IGE7CnB1YmxpYzoKICAgIEEoaW50IGEpIDogYShhKSB7IH0gCiAgICB2b2lkIHByaW50KCkgeyBzdGQ6OmNvdXQgPDwgYTsgfQogICAgCiAgICBBJiBvcGVyYXRvcis9KGNvbnN0IEEgJm90aGVyKSB7CiAgICAgICAgYSArPSBvdGhlci5hOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0gICAKfTsKCmNsYXNzIEIgOiBwdWJsaWMgQSB7IApwcml2YXRlOgogICAgaW50IGI7CnB1YmxpYzoKICAgIEIoaW50IGEsIGludCBiKSA6IEEoYSksIGIoYikgeyB9IAogICAgdm9pZCBwcmludCgpIHsgCiAgICAJc3RkOjpjb3V0IDw8ICcoJzsgCiAgICAJQTo6cHJpbnQoKTsKICAgIAlzdGQ6OmNvdXQgPDwgIiwgIiA8PCBiIDw8ICcpJyA8PCBzdGQ6OmVuZGw7CiAgICB9CiAgICAKICAgIEImIG9wZXJhdG9yKz0oY29uc3QgQiAmb3RoZXIpIHsKICAgICAgICBBOjpvcGVyYXRvcis9KG90aGVyKTsKICAgICAgICBiICs9IG90aGVyLmI7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfSAgIAp9OwoKaW50IG1haW4oKSB7CiAgICBCIGIxKDEsIDIpOyAKICAgIEIgYjIoMywgNCk7IAogICAgYjEucHJpbnQoKTsKICAgIGIxICs9IGIyOyAKICAgIGIxLnByaW50KCk7CiAgICAgICAgCiAgICByZXR1cm4gMDsKfQ==