Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- struct base {
- base()
- {
- std::cout << "base is under construction, derived unborn" << std::endl;
- f();
- }
- virtual ~base()
- {
- std::cout << "base dtor" << std::endl;
- f();
- }
- virtual void f()
- {
- std::cout << "base::f()" << std::endl;
- }
- };
- struct derived : base {
- derived()
- {
- std::cout << "derived is under construction" << std::endl;
- }
- virtual ~derived()
- {
- std::cout << "derived no longer exists" << std::endl;
- }
- virtual void f() override
- {
- std::cout << "derived::f()" << std::endl;
- }
- };
- void f()
- {
- base* b = new derived;
- std::cout << "derived object X is alive" << std::endl;
- b->f();
- delete b;
- }
Advertisement
Add Comment
Please, Sign In to add comment