一,子类型的作用:
在需要父类对象的任何地方, 可以使用”公有派生”的子类的对象来替代,
从而可以使用相同的函数统一处理基类对象和公有派生类对象
即:形参为基类对象时,实参可以是派生类对象
#include <iostream>
using namespace std;
class Father {
public:
void play() {
cout << "KTV唱歌!" << endl;
}
};
class Son : public Father {
public:
void play() {
cout << "今晚吃鸡!" << endl;
}
};
void party(Father *f1, Father *f2) {
f1->play();
f2->play();
}
int main(void) {
Father yangKang;
Son yangGuo;
party(&yangKang, &yangGuo);
system("pause");
return 0;
}
输出为:
注意:如果把Son改为protected继承,或private继承,就会导致编译失败!
二,子类型的应用
1.基类(父类)的指针,可以指向这个类的公有派生类(子类型)对象。
Son yangGuo;
Father * f = &yangGuo;
2.公有派生类(子类型)的对象可以初始化基类的引用
Son yangGuo;
Father &f2 = yangGuo;
3.公有派生类的对象可以赋值给基类的对象
Son yangGuo;
Father f1 = yangGuo;
注意:以上的应用,反过来就会编译失败!