黑马程序员——多态

多态分为:静态多态,动态多态
静态多态:函数重载和运算符重载
动态多态:派生类和虚函数实现运行时多态
地址早绑定
这个时候输出的就是 动物在说话,因为已经确定了地址,虽然定义的是猫类,但是可以向上兼容父类。这样是不对的,需要地址晚绑定,父类加关键字virtual
动态多态满足条件:
1、有继承关系、
2、子类重写父类的虚函数(重写:函数返回值类型,形参,函数名都要相同)

#include <iostream>
#include <string>
using namespace std;

class animal {
public:
	virtual void speak() {//加virtual
		cout << "动物在说话" << endl;
	}
};
class cat :public animal {
public:
	void speak() {
		cout << "小猫咪在说话" << endl;
	}
};
class dog :public animal {
public:
	void speak() {
		cout << "小狗狗在说话" << endl;
	}
};
//地址早绑定
//这个时候输出的就是  动物在说话,因为已经确定了地址,虽然定义的是猫类,但是可以向上兼容父类
//这样是不对的,需要地址晚绑定,父类加关键字virtual
//动态多态满足条件:有继承关系、子类重写父类的虚函数(重写:函数返回值类型,形参,函数名都要相同)
void test(animal& p) {
	p.speak();
}
int main() {
	cat cat;
	dog dog;
	test(cat);
	test(dog);
	system("pause");
	return 0;
}

版权声明:本文为weixin_44730078原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。