当前位置:首页 C++ > 正文

C++中什么是纯虚函数,有什么作用?

作者:野牛程序员:2023-05-19 07:25:45 C++阅读 2799

在C++中,纯虚函数(Pure Virtual Function)是在基类中声明的虚函数,但没有提供实现。它的语法形式是在函数声明的末尾加上= 0

例如:

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

纯虚函数的作用是将基类设计为一个抽象类(Abstract Class)。抽象类是不能被实例化的类,只能作为其他类的基类使用。纯虚函数要求派生类必须提供自己的实现,否则派生类也将成为抽象类。

派生类必须实现基类中的纯虚函数,否则编译器会报错。通过实现纯虚函数,派生类可以为其提供具体的行为,从而使基类的接口变得具体化。

纯虚函数提供了一种多态性的机制。通过基类的指针或引用,可以在运行时调用派生类中的具体实现。这种多态性使得程序可以根据实际对象的类型来调用适当的函数,从而实现了动态绑定和运行时多态性。

总结起来,纯虚函数的作用是定义一个接口,要求派生类必须提供具体实现,从而实现多态性和抽象类的概念。

下面是一个简单的代码示例,演示了纯虚函数的用法:

#include <iostream>

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

class Circle : public Shape {
public:
    void draw() override {
        std::cout << "Drawing a circle." << std::endl;
    }
};

class Square : public Shape {
public:
    void draw() override {
        std::cout << "Drawing a square." << std::endl;
    }
};

int main() {
    Circle circle;
    Square square;

    Shape* shape1 = &circle;
    Shape* shape2 = &square;

    shape1->draw();  // 调用派生类Circle的实现
    shape2->draw();  // 调用派生类Square的实现

    return 0;
}

在上面的代码中,Shape 是一个抽象类,其中包含一个纯虚函数 draw()CircleSquare 分别是 Shape 的派生类,它们必须实现 draw() 函数。

main() 函数中,我们创建了一个 Circle 对象和一个 Square 对象,并通过基类指针 Shape* 分别指向它们。通过调用基类指针的 draw() 函数,实际上会根据指针所指向的对象类型来调用相应的派生类实现。这就体现了多态性和动态绑定的特性。

输出结果:

Drawing a circle.
Drawing a square.
注意,在使用纯虚函数的时候,不能直接实例化抽象类,如上面的代码中的 Shape 类。只能通过派生类来使用抽象类的功能。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击