Commit 2d062511d357dfa68f7d94ca9d979555cdf351e7
1 parent
3a6661da
Added virtual method call in destructor example
Showing
1 changed file
with
28 additions
and
0 deletions
examples10/destructor.cpp
0 → 100644
1 | +#include <iostream> | ||
2 | +using namespace std; | ||
3 | + | ||
4 | +class base | ||
5 | +{ | ||
6 | +public: | ||
7 | + base() { cout << "base()" << endl;} | ||
8 | + virtual void f() { cout << "base" << endl; }; | ||
9 | + void g() { this->f(); }; | ||
10 | + virtual ~base() { this->f(); cout << "~base()" << endl;}; | ||
11 | +}; | ||
12 | + | ||
13 | +class derived : public base | ||
14 | +{ | ||
15 | +int *ptr; | ||
16 | +public: | ||
17 | + derived() { ptr = new int(7); cout << "derived()" << endl;}; | ||
18 | + ~derived() { delete ptr; cout << "~derived()" << endl;}; | ||
19 | + void f() override { cout << "derived " << *ptr << endl; }; | ||
20 | +}; | ||
21 | + | ||
22 | +int main() | ||
23 | +{ | ||
24 | + base* ptr = new derived; | ||
25 | + ptr -> g(); | ||
26 | + ptr -> f(); | ||
27 | + delete ptr; | ||
28 | +} |