Virtual Destructor:
For ex
class Base
{
public:
int a;
};
class Derived:Base
{
};
int main()
{
Base * b=new Derived()
delete b;
}
flow of constructor
first create Base class Constructor
1.construct base class Constructor
2.construct Derived class Constructor
3.Delete Base Class Destructor
Here Derived class Destructor is not call ,for it we need to declare Base class Destructor as a
virtual Destructor
class Base
{
public:
Base();
~virtual Base();
};
vTable:-
It is a look up table for functions used to resolve at run time /dynamic .Every class that uses virtual function has its own virtual table (is it derived class or base class) .this table is simply a static array.that the compiler set at compiile time.
For ex
class Base
{
public:
int a;
};
class Derived:Base
{
};
int main()
{
Base * b=new Derived()
delete b;
}
flow of constructor
first create Base class Constructor
1.construct base class Constructor
2.construct Derived class Constructor
3.Delete Base Class Destructor
Here Derived class Destructor is not call ,for it we need to declare Base class Destructor as a
virtual Destructor
class Base
{
public:
Base();
~virtual Base();
};
vTable:-
It is a look up table for functions used to resolve at run time /dynamic .Every class that uses virtual function has its own virtual table (is it derived class or base class) .this table is simply a static array.that the compiler set at compiile time.
Comments
Post a Comment