Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language:
Expertise: Intermediate
Nov 27, 2000

auto_ptr and Derived Objects

The auto_ptr<> class template respects polymorphism and destroys derived objects of base pointers properly. In the following program, an auto_ptr<A* > is actually bound to a B * pointer, where B is a class derived from A. Still, when auto_ptr's destructor executes, it calls the correct destructor—the destructor of class B:

 
#include <memory> // for auto_ptr
using namespace std;

struct A
{
 virtual ~A() {}
};
struct B : public A
{
 virtual ~B() {}
};

int main()
{
 A * p;
 {
  p=new B; // pointer to base points to derived object
  auto_ptr<A> pa(p); // bind auto_ptr to p
 }// B's destructor called here
}
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap