+-
虚函数和抽象函数一般什么时候会用到
class A {
public:
virtual void func() { // 虚函数
cout << "A::func" << endl;
}
};
class B {
public:
virtual void func() = 0; // 纯虚函数
}
虚函数使用场景:运行时多态
在继承树中,可发生运行时多态行为(同一接口,运行时不同表现) 当子类需要重新实现父类某一功能时,可重写虚函数覆盖父类实现抽象函数(纯虚函数)使用场景:接口
拥有纯虚函数的类称为纯虚类,只有类声明,不能创建对象 对应的子类必须覆盖实现父类纯虚函数,否则也不能创建对象(形成了使用约束) 顶层父类定义好接口(纯虚函数)原型,不同子类继承实现函数定义