class Base
{
public:
void do(){}
}
class Son:public Base
{
public:
void do(){}//覆盖
}
1、虚函数
父类和子类都有一个方法:do();但是通过子类对象指针访问这个do方法的时候,编译器会选择基类的do()来实现,而不是子类的:
Son son;
Base *p=&son;
p->do();
为了使son对象可以使用自己的do方法,可以在Base的do方法前面加virtual:virtual void do(){}
2、抽象函数
即这个Base的do方法不实现,永远由它的子类来实现(空壳),先加virtual,再加=0:virtual void do()=0;