c++多态的定义以及虚函数重写(覆盖)
作者:野牛程序员:2024-01-03 13:34:47 C++阅读 2937
多态是面向对象编程中的一个重要概念,它允许不同的子类对象通过它们的共同基类接口进行访问。在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

