1.子类对象可以直接赋值给父类对象
2.子类对象可以当做父类对象使用
3.子类对象可以直接初始化父类对象
4.父类指针可以直接指向子类对象
5.父类引用可以直接引用子类对象
以下是每一点的代码验证
1 子类对象可以直接赋值给父类对象
#include<iostream>
using namespace std;
class Parent
{
private:
int a;
public:
};
class Child :public Parent
{
private:
int b;
public:
};
int main()
{
Child c;
Parent p;
p = c; //子类对象可以直接赋值给父类对象
return 0;
}
编译会报错,但出错点是Child类对象c未初始化。而在语法上,子类对象给父类对象直接赋值是可行的。
本质是子类中包含了父类全部的内容,一个子类对象中肯定含有能构成一个父类对象的元素,因此可以直接赋值。但是子类中有可能会有父类中没有的元素,因此父类对象不能对子类对象直接赋值。
2 子类对象可以当做父类对象使用
#include<iostream>
using namespace std;
class Parent
{
private:
int a;
public:
void PrintP()
{
cout << "a = " << a << endl;
}
};
class Child :public Parent
{
private:
int b;
public:
};
int main()
{
Chil