子类型的作用与应用

一,子类型的作用:
在需要父类对象的任何地方, 可以使用”公有派生”的子类的对象来替代,
从而可以使用相同的函数统一处理基类对象和公有派生类对象
即:形参为基类对象时,实参可以是派生类对象

#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;

注意:以上的应用,反过来就会编译失败!

猜你喜欢

转载自blog.csdn.net/weixin_46060711/article/details/123932943