#include <iostream>
using namespace std;
class A
{
public:
void print()
{
cout << "This is A" << endl;
}
};
class B :public A
{
public:
void print()
{
cout << "This is B" << endl;
}
};
int main()
{
A a;
B b;
A *p1 = &a;
A *p2 = &b; //指向基类的指针在操作它的多态类对象时,会根据不同的类对象,调用其相应的函数,这个函数就是虚函数
p1->print();
p2->print();
return 0;
using namespace std;
class A
{
public:
void print()
{
cout << "This is A" << endl;
}
};
class B :public A
{
public:
void print()
{
cout << "This is B" << endl;
}
};
int main()
{
A a;
B b;
A *p1 = &a;
A *p2 = &b; //指向基类的指针在操作它的多态类对象时,会根据不同的类对象,调用其相应的函数,这个函数就是虚函数
p1->print();
p2->print();
return 0;
}
简单说就是
当基类指针指向一个子类对象,通过这个指针调用子类和基类同名成员函数的时候,基类声明为虚函数「子类不写也可以」就会调子类的这个函数,不声明就会调用基类的。
不声明:
结果:This is A
This is A
virtual 声明:(实现多态性)
结果: This is A
This is B