Constructors and Destructors in C++

From Wiki**3

Revision as of 04:47, 28 February 2008 by Root (talk | contribs) (Constructors and Destructores in C++ moved to Constructors and Destructors in C++)

Constructors

Destructors

Virtual Destructors

Virtual destructors are needed when class hierarchies are used and when polymorphism is used in the program.

The problem is how to select the correct destructor when an object referenced by a pointer not of its own class is deleted. <cpp> class Base { public:

 ~Base() {}
 virtual void f() {}

};

class Derived : public Base { public:

 ~Derived() {}
 void f() {}

};

void main() {

 Base *b = new Derived();
 a->f();     // ok:       calls Derived::f()
 delete b;   // problems: calls Base::~Base()

} </cpp>

Defining the destructor virtual in Base solves the problem and allows the correct destructor to be selected in the previous example.

The destructor line in the Base should read: <cpp>

 virtual ~Base() {}

</cpp>