c++多态的定义以及虚函数重写(覆盖)
作者:野牛程序员:2024-01-03 13:34:47 C++阅读 2678
多态是面向对象编程中的一个重要概念,它允许不同的子类对象通过它们的共同基类接口进行访问。在C++中,多态通过虚函数(virtual functions)来实现。以下是对C++多态的定义以及虚函数的重写(覆盖)的解释:
多态性是指在相同的函数调用中,可以有多个不同的实现方式,具体取决于调用这个函数的对象的类型。这使得程序可以根据运行时对象的实际类型来选择调用合适的函数,而不是在编译时确定。
虚函数是在基类中声明为virtual
的成员函数。在派生类中,可以通过重写(覆盖)基类中的虚函数来提供特定于派生类的实现。下面是一个简单的例子:
#include <iostream> class Shape { public: // 虚函数 virtual void draw() { std::cout << "Drawing a shape" << std::endl; } }; 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() { Shape* shape1 = new Circle(); Shape* shape2 = new Square(); // 调用虚函数,根据对象的实际类型选择正确的实现 shape1->draw(); // 输出:Drawing a circle shape2->draw(); // 输出:Drawing a square delete shape1; delete shape2; return 0; }
在上述示例中,Shape
类有一个虚函数 draw()
,然后有两个派生类 Circle
和 Square
分别重写了 draw()
函数。在 main()
函数中,通过指向基类的指针分别创建了 Circle
和 Square
对象,并调用了它们的 draw()
函数。由于 draw()
是虚函数,实际上调用的是对象的实际类型对应的函数实现,实现了多态性。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
