在c++中多态性,动态联编和虚函数是密切联系的
虚函数:就是那些被virtual修饰的成员函数
实例代码
#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 aa;
B bb;
aa.print();
bb.print();
return 0;
}
但是这并没有做到真正的多态,多态的关键之处在于使用指向基类的指针或引用来操作对象
对主函数做一下修改:
int main()
{
A aa;
B bb;
A *s1=&aa;
A *s2=&bb;
s1->print();
s2->print();
return 0;
}
很显然这不是我们想要的结果,对A类使用虚函数
class A
{
public:
virtual void print()
{
cout<<"This is A"<<endl;
}
};
由于通过使用virtual所以A类中的print()成为虚函数,B类中的print()函数继承A类,所以B中的print()也是虚函数;只要基类中的函数是虚函数,不管继承类成员函数有没有virtual修饰,都是虚函数