子类型关系
一、什么是子类型
公有继承时,派生类的对象可以作为基类的对象处理,派生类是基类的子类型。

B类就是A类的子类型.
|
#include <iostream>
using namespace std;
class A { public: A() {} ~A() {} void kill() { cout << "A kill." << endl; } };
class B : public A { public: B(){} ~B(){} void kill() { cout << "B kill." << endl; } };
void test(A a) { a.kill(); //调用的是A类对象的kill方法 }
int main(void) { A a; B b; test(a); test(b);
system("pause"); return 0; } |
二、子类型的作用
在需要父类对象的任何地方, 可以使用”公有派生”的子类的对象来替代,
从而可以使用相同的函数统一处理基类对象和公有派生类对象
即:形参为基类对象时,实参可以是派生类对象
三、子类型的应用
1、基类(父类)的指针,可以指向这个类的公有派生类(子类型)对象。
Son yangGuo;
Father * f = &yangGuo;
2、公有派生类(子类型)的对象可以初始化基类的引用
Son yangGuo;
Father &f2 = yangGuo;
3、公有派生类的对象可以赋值给基类的对象
Son yangGuo;
Father f1 = yangGuo;

浙公网安备 33010602011771号