njl36a-7001:/home/yzaytsev/src $ cat ./copy.cpp #include class X { public:X(){} X (const X&) { std::cout << "X\n"; } X& operator=(const X&) {std::cout << "X\n"; } }; class C {public: int i; X x; }; int main() { C a, b; a.i =10; b = a; std::cout << "b.i: "<< b.i << '\n'; } njl36a-7001:/home/yzaytsev/src $ CC=g++ CXX=g++ make copy make: `copy' is up to date. njl36a-7001:/home/yzaytsev/src $ ./copy X b.i: 10 njl36a-7001:/home/yzaytsev/src $