IT Community - Software Programming, Web Development and Technical Support

Explain the need for "Virtual Destructor".

This is a discussion on Explain the need for "Virtual Destructor". within the C and C++ Programming forums, part of the Software Development category; Explain the need for "Virtual Destructor" ?...


Go Back   IT Community - Software Programming, Web Development and Technical Support > Software Development > C and C++ Programming

Register FAQ Members List Calendar Mark Forums Read
  #1 (permalink)  
Old 07-23-2007, 01:15 AM
Sabari Sabari is offline
D-Web Genius
 
Join Date: Jul 2007
Posts: 1,008
Sabari is on a distinguished road
Exclamation Explain the need for "Virtual Destructor".

Explain the need for "Virtual Destructor" ?
__________________
Thanks & Regards
Sabari...
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Sponsored Links
  #2 (permalink)  
Old 07-31-2007, 12:18 AM
kingmaker kingmaker is offline
D-Web Genius
 
Join Date: Jun 2007
Posts: 882
kingmaker is on a distinguished road
Send a message via Yahoo to kingmaker
Arrow Re: Explain the need for "Virtual Destructor".

these are the following reasons to use virtual destructors:-

1. Without a virtual destructor, the proper destructor may not be
called:

struct B {~B();};
struct D : B {~D();};
B* b = new D;
delete b; // <--------- Will not call D::~D() !!!!!

2. Without a virtual destructor, operator delete(void*, size_t) may
not be called with the correct size.

struct B {~B(); operator delete(void*, size_t);};
struct D : B {~D();};
B* b = new D;
delete b; // <--------- Will call operator delete(void*, size_t) with
// the size of B not the size of D!!!

3. Without a virtual destructor, and when MI is used, operator
delete(void*) or operator delete (void*, size_t) may be called with
the wrong address.

struct B {~B();};
struct A {};
struct D : A, B {~D();};
B* b = new D;
delete b; // <--------- May not pass to operator delete the address
// that was returned by operator new!!!
__________________
The KINGMAKER
Makes Every Thing Possible

Stuffs (My Blog)
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Anybody explain about "Common Type System" (CTS)? H2o ASP and ASP.NET Programming 5 08-09-2007 08:02 AM
Explain "passing by value", "passing by pointer" and "passing by reference" Sabari C and C++ Programming 1 07-30-2007 11:29 PM
I keep getting "Data Missing" when I click the "back" button in my browser. How can I oxygen HTML, CSS and Javascript Coding Techniques 1 07-28-2007 01:12 AM
Why do I get "HTTP 500" error(or "(DLL)initialization routine failed")in my browser? kingmaker ASP and ASP.NET Programming 1 07-20-2007 04:38 AM
Explain the need for virtual destructor prasath C and C++ Programming 1 07-17-2007 06:01 AM


All times are GMT -7. The time now is 04:08 PM.


Copyright ©2004 - 2007, DiscussWeb. All Rights Reserved.

SEO by vBSEO 3.0.0