#include struct A { int x; A(int xx) : x(xx) { std::cout << "A(int)\n"; } A(const A &b) : x(b.x) { std::cout << "A(const A&)\n"; } const A & operator=(const A &b) { x = b.x; std::cout << "operator=\n"; return *this; } A operator+(const A &b) { A a(x + b.x); std::cout << "operator+\n"; return a; } ~A() { std::cout << "~A()\n"; } }; int main() { A a(10), b(20), c(0); std::cout << "------------\n"; c = a + b; return 0; }