How do you know that your class needs a virtual destructor?
Answers were Sorted based on User's Feedback
Answer / guest
If your class has at least one virtual function, you should
make a destructor for this class virtual. This will allow
you to delete a dynamic object through a baller to a base
class object. If the destructor is non-virtual, then wrong
destructor will be invoked during deletion of the dynamic
object.
Is This Answer Correct ? | 8 Yes | 1 No |
Answer / abc
When We Declare a Virtual Function In Base Class.
The Base Class Pointer Can Point To Derived Class objects.
And If we Try To Delete The Base Class Pointer ,it will Call
the base Class Destructor(Which Is Wrong).
To Handle Such Scenario,The Base Class Destructor need To
Be Declared As Virtual(Which Makes All The Derived Class
Destructors Virtual).Now The Base Class Pointer Will Call
The Respective Destructors(Ofcourse,It Is Decided at Run
Time.With The Virtual Mechanism.)
Is This Answer Correct ? | 3 Yes | 0 No |
Answer / som shekhar
If we are deriving from the base class and the base class
consist of some virtual function , then in this case the
base destructor should be virtual.
if you do some thing like this :
base* b = new derived;
delete b;
In this case if base destructor is NOT VIRTUAL then only
base destructor is called and derived destructor wont be
called resulting into memory leak.
But if the base destructor is virtual then derived class
destructor and base destructor both will be called.
Is This Answer Correct ? | 1 Yes | 0 No |
Answer / melos
If the class will be derived from and it will need a virtual
destructor so that the destructor of the derived class will
be invoked if it referenced using the pointer to the base class.
Is This Answer Correct ? | 1 Yes | 1 No |
Answer / nishikant sahu
If programmer intended to act the class as a BASE class
somewhere then it is rule of thumb or good programming that
you have to have declare your constructor virtual.
Is This Answer Correct ? | 3 Yes | 6 No |
What is the difference between the compiler and the preprocessor?
Shall we use 'free' to free memory assigned by new, What are the further consequences??
There is a array of 99 cells and we have to enter 1-100 elements in it , no two elements would repeat , so the is one no. missing because 99 cells and 1-100 nos. so we had to implement a function to find that missing no.
C is to C++ as 1 is to a) What the heck b) 2 c) 10
What are the four main data types?
What is c++ flowchart?
When is the destructor called?
Which of the following is evaluated first: a) && b) || c) !
What is pointer to member?
class basex { int x; public: void setx(int y) {x=y;} }; class derived : basex {}; What is the access level for the member function "setx" in the class "derived" above? a) private b) local c) global d) public e) protected
Does std endl flush?
How many different levels of pointers are there?