C++中什么是纯虚函数,有什么作用?
作者:野牛程序员:2023-05-19 07:25:45 C++阅读 3229
在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++中什么是虚函数和纯虚函数,以及它们的区别
- 下一篇:什么是数据的双写?
