#include <iostream>
using namespace std;
class base
{
public:
int a;
virtual void show() //声明了一个虚函数
{
cout << "show_base" << endl;
}
};
class new_base :public base
{
public:
void show()
{
cout << "show_new_base" << endl;
}
};
int main()
{
//cout << sizeof(new_base) << endl; //16 证明子类把父类的虚表也继承下来了
new_base a;
a.show(); //show_new_base
//通过基类把 派生隐藏的接口显示出来
// base &q=a;
// q.show(); //show_base
base *q= &a;
q->show();
}
当基类拥有一个虚函数,并在派生类中,对该虚函数进行了重写。 这种就是覆盖!!
覆盖的条件:
1.基类必须要有虚函数
2.派生类必须要重写基类的虚函数
3.通过基类 的指针 或 引用,指向派生类,并调用重写的方法。只有满足上述三个条件才会出现这种覆盖现象。