#include struct A{ A(){std::cout<<"Adef\n";} A(const A&){std::cout<<"Acpy\n";} ~A(){std::cout<<"~A\n";} }; struct B:public A{ B(){std::cout<<"Bdef\n";} B(const B&m){std::cout<<"Bcpy\n";} ~B(){std::cout<<"~B\n";} }; struct C:public A{ C(){std::cout<<"Cdef\n";} C(const C&m):A(m){std::cout<<"Ccpy\n";} ~C(){std::cout<<"~C\n";} }; int main() { B b; // Adef Bdef C c; // Adef Cdef B b1(b); // Adef Bcpy ????? C c1(c); // Acpy Ccpy !!!!! } // ~C ~A ~B ~A ~C ~A ~B ~A