1.子类对象可以直接赋值给父类对象,父类对象不能赋值给子类对象
运行结果:
原因:
子类child所占内存大于parent,可以满足给parent赋值条件。
父类parent所占内存小于child,不能满足给child赋值条件。
2.父类指针可以直接指向子类对象,子类指针不能指向父类对象
见代码:
class Parent {
public:Parent(int a) {this->a &#61; a;}int a;void printP() {cout << "a&#61;" << a << endl;}
};class Child :public Parent
{
public:Child(int a,int b) :Parent(a){this->b &#61; b;}int b;void printC() {cout << "a&#61;" << a << "&#xff0c;b&#61;" << b << endl;}
};
int main() {Child* cp&#61;nullptr;Parent* pp&#61;nullptr;Parent p(1);Child c(2, 3);cp &#61; &c;pp &#61; &p;cp &#61; &p;pp &#61; &c;
}
原因&#xff1a;
可以看到以下两图&#xff0c;子类功能明显多于父类。
如果让子类指针指向父类对象&#xff0c;不能满足子类这些功能。
如果让父类指针指向子类对象&#xff0c;可以满足父类这些功能。
3.父类引用可以直接引用子类对象
与2.父类指针可以直接指向子类对象&#xff0c;子类指针不能指向父类对象原理相同。