parent 是父类,son 是子类
Son s1;
Parent p1(s1);//这会调用 parent 的拷贝构造函数。
那么我们可以看一下parent 的拷贝构造函数怎么写的呢?
//拷贝构造方法
Parent1::Parent1(const Parent1& obj) {
this->m_parent_age = obj.m_parent_age;
this->m_parent_name = obj.m_parent_name;
this->m_parent_number = obj.m_parent_number;
cout << "parent1 的拷贝构造函数被调用 " << endl;
}
从上述的拷贝构造函数来看,父类会将自己的部分的值 拷贝过去。
那么 这时候const Parent1& obj 就是 s1,s1有继承父的部分,继承父的部分,会由父类的构造函数执行,因此 obj这时候即使是son,也有 parent 的部分,这样赋值是没有问题的。
因此这样的赋值是OK的
Son s1;
Parent p1(s1);//这会调用 parent 的拷贝构造函数。OK 的,不会有问题
同理:=号操作也是没有问题的。
Son s2;
Parent pa2;
pa2 = s2;
//赋值运算符重写
Parent1 & Parent1::operator=(const Parent1& obj) {
this->m_parent_age = obj.m_parent_age;
this->m_parent_name = obj.m_parent_name;
this->m_parent_number = obj.m_parent_number;
cout << "parent1 的=号运算符重载调用 " << endl;
return *this;
}
那么 这时候const Parent1& obj 就是 s2,s2有继承父的部分,继承父的部分,会由父类的构造函数执行,因此 obj这时候即使是son,也有 parent 的部分,这样赋值是没有问题的。