#include <iostream>
using namespace std;
class A
{
public:
void func1()
{
cout << "A1" << endl;
}
virtual void func2()
{
cout << "A2" << endl;
}
};
class B : public A
{
public:
void func1()
{
cout << "B1" << endl;
}
void func2()
{
cout << "B2" << endl;
}
};
int main()
{
A *a = new B;
a->func1();
a->func2();
}
下面是输出
就是用基类的指针指向子类对象
由于func1不是虚函数,因此实际执行的是基类的func1函数
由于func2是虚函数,因此实际执行的是子类的fun2函数
这个代码就是来体现类的多态性的样例代码。
通过基类指针,指向具体的某个子类对象,在调用虚函数时,多态性会自动调用具体子类的函数,而不是基类的函数。