多态分为:静态多态,动态多态
静态多态:函数重载和运算符重载
动态多态:派生类和虚函数实现运行时多态
地址早绑定
这个时候输出的就是 动物在说话,因为已经确定了地址,虽然定义的是猫类,但是可以向上兼容父类。这样是不对的,需要地址晚绑定,父类加关键字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版权协议,转载请附上原文出处链接和本声明。