日常一水C
多态
言简意赅:就是一个对象面对同一事件时做出的不同反应
而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用,如下
#include<iostream>
using namespace std;class father
{
public:void show(){cout<<"This is father"<<endl;}
};class son:public father
{
public:void show(){cout<<"This is son"<<endl;}
};int main()
{son john;john.show();john.father::show();return 0;
}
这其实应该也算得上一种多态
但是真正的多态中引用了一种名为虚函数的技艺:
关键字:virtual
通常情况下,虚函数被置于基类中被用于子类继承
关键字其二:override
该关键字作用是在编译时告诉编译器,当前函数的目的是覆盖基类中的虚函数
override有且仅能用于虚函数
两个关键字进行对比:
virtual用于声明该函数为虚函数
override用于声明该派生类函数覆盖虚函数
#include<iostream>
using namespace std;class Base {//父类带虚函数
public:virtual void display() {cout << "Base display" << endl;}
};class Derived : public Base {//子类
public:void display() override {//关键字override cout << "Derived display" << endl;}
};int main() {Base* ptr = new Derived();//父类指针 ptr->display(); // 输出 "Derived display",实现了多态delete ptr;return 0;
}