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 = □ shape1->draw(); // 调用派生类Circle的实现 shape2->draw(); // 调用派生类Square的实现 return 0; }
在上面的代码中,Shape
是一个抽象类,其中包含一个纯虚函数 draw()
。Circle
和 Square
分别是 Shape
的派生类,它们必须实现 draw()
函数。
在 main()
函数中,我们创建了一个 Circle
对象和一个 Square
对象,并通过基类指针 Shape*
分别指向它们。通过调用基类指针的 draw()
函数,实际上会根据指针所指向的对象类型来调用相应的派生类实现。这就体现了多态性和动态绑定的特性。
输出结果:
Drawing a circle. Drawing a square.
注意,在使用纯虚函数的时候,不能直接实例化抽象类,如上面的代码中的 Shape 类。只能通过派生类来使用抽象类的功能。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
- 上一篇:详细讲解C++中什么是虚函数和纯虚函数,以及它们的区别
- 下一篇:什么是数据的双写?