子类型关系

一、什么是子类型

公有继承时,派生类的对象可以作为基类的对象处理,派生类是基类的子类型。

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;

posted @ 2020-06-01 09:55  CollisionDimension  阅读(356)  评论(0)    收藏  举报