// temp1.cpp #include class Y { public: Y() { std::cout << "\n Y()"; } Y(const Y& y) { std::cout << "\n Y(const Y& y)"; } Y& operator=(const Y& y) { if(this == &y) return *this; std::cout << "\n Y::Operator=()"; return *this; } }; class X : public Y { public: X() { std::cout << "\n X()"; } X(const X& x) : Y(x) { std::cout << "\n X(const X& x)"; } X func() { std::cout << "\n func()"; return *this; } }; int main() { Y y = X().func(); // does not call operator=() std::cout << "\n\n"; return 0; }