跳到主要内容

解释虚函数、纯虚函数 ?

参考答案:

虚函数(Virtual Function)和纯虚函数(Pure Virtual Function)是C++中面向对象编程的重要概念,主要用于实现多态性(Polymorphism)。

虚函数(Virtual Function)

虚函数是一种特殊的成员函数,它在基类中被声明为虚函数,可以在派生类中被重写(Override)。当基类指针或引用指向派生类对象时,调用该虚函数将执行派生类中的实现,而不是基类中的实现,这就是动态绑定或运行时多态。

例如:

class Base {
public:
    virtual void func() { cout << "Base function\n"; }
};

class Derived : public Base {
public:
    void func() override { cout << "Derived function\n"; }
};

int main() {
    Base* basePtr = new Derived();
    basePtr->func();  // 输出 "Derived function"
    delete basePtr;
    return 0;
}

纯虚函数(Pure Virtual Function)

纯虚函数是一种特殊的虚函数,它在基类中没有实现(只有声明)。包含纯虚函数的类被称为抽象类,不能直接实例化。派生类必须提供该纯虚函数的实现,否则派生类也将成为抽象类。

例如:

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

class Derived : public AbstractBase {
public:
    void func() override { cout << "Derived function\n"; }
};

int main() {
    // AbstractBase* abstractPtr = new AbstractBase();  // 错误,抽象类不能直接实例化
    AbstractBase* abstractPtr = new Derived();
    abstractPtr->func();  // 输出 "Derived function"
    delete abstractPtr;
    return 0;
}

纯虚函数的主要作用是定义接口,让派生类去实现这些接口。这样可以实现一种类似插件的机制,使得程序可以在运行时动态地加载和卸载不同的派生类实现。