J
johnsonlau
When a class derives from a class,
You can use a pointer to the parent class to delete the instance of
child
only when a virtual destructor declared in the parent.
class Parent
{
virtual ~Parent(); // virtual destructor
}
class Child : public Parent
{
}
Parent * instance = new Child();
delete instance;
===============================================
But is it the same when parent is a struct?
struct StructParent {
}
class Child : public StructParent {
}
StructParent * instance = new Child();
delete instance;
Does this mean that I should decleare a virtual destructor in
StructParent
to provide correct information about the parent and a safe delete
operation?
Or I can only write codes like:
Child * instance = new Child();
delete instance;
I'm a little confused.
Can I say that,
if I ensure that I only use pointer to the Child (bug not the
Parent's) and
perform delete operation on it, plus there is no virtual method in
both Parent and Child,
I can define no virtual destructor in struct inheritance and class
inheritance.
Thank you.
You can use a pointer to the parent class to delete the instance of
child
only when a virtual destructor declared in the parent.
class Parent
{
virtual ~Parent(); // virtual destructor
}
class Child : public Parent
{
}
Parent * instance = new Child();
delete instance;
===============================================
But is it the same when parent is a struct?
struct StructParent {
}
class Child : public StructParent {
}
StructParent * instance = new Child();
delete instance;
Does this mean that I should decleare a virtual destructor in
StructParent
to provide correct information about the parent and a safe delete
operation?
Or I can only write codes like:
Child * instance = new Child();
delete instance;
I'm a little confused.
Can I say that,
if I ensure that I only use pointer to the Child (bug not the
Parent's) and
perform delete operation on it, plus there is no virtual method in
both Parent and Child,
I can define no virtual destructor in struct inheritance and class
inheritance.
Thank you.