I am trying to understand the following code.
I created two classes BClass and DClass as follows.
//My Header file
class BClass
{
public:
BClass();
~BClass();
virtual void PrintMe() const;
};
class DClass : public BClass
{
public:
DClass();
~DClass();
void PrintMe() const;
};
//My cpp file
BClass::BClass()
{
}
BClass::~BClass()
{
}
void BClass::PrintMe() const
{
printf("This is base class \n");
}
DClass::DClass()
{
}
DClass::~DClass()
{
}
void DClass::PrintMe() const
{
printf("This is derived class \n");
}
//My main file
BClass b; //BClass constructor called
b.PrintMe();
DClass d; //DClass constructor called
d.PrintMe();
BClass* b1 = &d; //No constructor called as it is pointer assignment
b1->PrintMe();
BClass b2 = d; //No constructor called...expecting BClass constructor to be called???
b2.PrintMe();
At the last section, I was expecting that BClass constructor to be called. But it did not. Could someone please explain me what is going on?
If do like this, we know BClass constructor is called
BClass b2; //BClass constructor called
b2 = d;
Could some one explain the difference between
BClass b2 = d;
and
BClass b2;
b2 = d;
Thank you.