What is a virtual destructor?
来源:互联网 发布:淘宝上下架软件哪个好 编辑:程序博客网 时间:2024/06/05 20:03
What is a virtual destructor?
* Virtual destructor ensures that the object destruction happens from the most derived class towards the base class.
* Significant in scenarios where a derived class object is assigned to a base class pointer.
EXAMPLE: Demonstrate the object destruction sequence.
#include
using namespace std;
class Base {
public:
Base() {
cout << "Base class constructor ..." << endl;
}
~Base() {
cout << "Base class destructor ..." << endl;
}
};
class Derived : public Base {
public:
Derived() {
cout << "Derived class constructor ..." << endl;
}
~Derived() {
cout << "Derived class destructor ..." << endl;
}
};
void main()
{
Base* base;
base = new Derived();
delete base;
}
OUTPUT:
Base class constructor ...
Derived class constructor ...
Base class destructor ...
EXAMPLE: Demonstrate the object destruction sequence using virtual destructor
#include
using namespace std;
class Base {
public:
Base() {
cout << "Base class constructor ..." << endl;
}
virtual ~Base() {
cout << "Base class destructor ..." << endl;
}
};
class Derived : public Base {
public:
Derived() {
cout << "Derived class constructor ..." << endl;
}
~Derived() {
cout << "Derived class destructor ..." << endl;
}
};
void main()
{
Base* base;
base = new Derived();
delete base;
}
OUTPUT:
Base class constructor ...
Derived class constructor ...
Derived class destructor ...
Base class destructor ...