虚函数和抽象函数一般什么时候会用到

虚函数和抽象函数一般什么时候会用到

class A {
public:
    virtual void func() {  // 虚函数
        cout << "A::func" << endl;
    }
};

class B {
public:
    virtual void func() = 0;  // 纯虚函数
}

虚函数使用场景:运行时多态

在继承树中,可发生运行时多态行为(同一接口,运行时不同表现) 当子类需要重新实现父类某一功能时,可重写虚函数覆盖父类实现

抽象函数(纯虚函数)使用场景:接口

拥有纯虚函数的类称为纯虚类,只有类声明,不能创建对象 对应的子类必须覆盖实现父类纯虚函数,否则也不能创建对象(形成了使用约束) 顶层父类定义好接口(纯虚函数)原型,不同子类继承实现函数定义