推荐答案
// www.javascriptcn.com code example
#include <iostream>
class Base {
public:
virtual void show() {
std::cout << "Base class show function" << std::endl;
}
};
class Derived : public Base {
public:
void show() override {
std::cout << "Derived class show function" << std::endl;
}
};
int main() {
Base* basePtr;
Derived derivedObj;
basePtr = &derivedObj;
// 多态调用
basePtr->show(); // 输出: Derived class show function
return 0;
}本题详细解读
多态的概念
多态(Polymorphism)是面向对象编程中的一个重要特性,它允许不同类的对象对同一消息做出不同的响应。在C++中,多态主要通过虚函数(virtual function)来实现。
虚函数与动态绑定
在C++中,通过在基类中声明虚函数,并在派生类中重写(override)该函数,可以实现多态。当通过基类指针或引用调用虚函数时,实际调用的是派生类中的函数版本,这种行为称为动态绑定(Dynamic Binding)或运行时多态(Runtime Polymorphism)。
代码解析
- 基类
Base:定义了一个虚函数show(),该函数在派生类中可以被重写。 - 派生类
Derived:重写了基类的show()函数,提供了不同的实现。 - 多态调用:在
main函数中,基类指针basePtr指向派生类对象derivedObj,并通过该指针调用show()函数。由于show()是虚函数,实际调用的是派生类中的show()函数,输出结果为"Derived class show function"。
关键点
- 虚函数:通过在基类中使用
virtual关键字声明虚函数,允许派生类重写该函数。 - 动态绑定:通过基类指针或引用调用虚函数时,实际调用的是派生类中的函数版本。
override关键字:在派生类中重写虚函数时,可以使用override关键字来显式表明重写行为,增加代码的可读性和安全性。
通过多态,C++ 程序可以在运行时根据对象的实际类型来调用相应的函数,从而实现更灵活和可扩展的设计。