C++ 面试题 目录

解释 C++ 中的多态 (polymorphism)

推荐答案

-- -------------------- ---- -------
-------- ----------

----- ---- -
-------
    ------- ---- ------ -
        --------- -- ----- ----- ---- --------- -- ----------
    -
--

----- ------- - ------ ---- -
-------
    ---- ------ -------- -
        --------- -- -------- ----- ---- --------- -- ----------
    -
--

--- ------ -
    ----- --------
    ------- -----------
    ------- - ------------

    -- ----
    ----------------  -- --- ------- ----- ---- --------

    ------ --
-

本题详细解读

多态的概念

多态(Polymorphism)是面向对象编程中的一个重要特性,它允许不同类的对象对同一消息做出不同的响应。在C++中,多态主要通过虚函数(virtual function)来实现。

虚函数与动态绑定

在C++中,通过在基类中声明虚函数,并在派生类中重写(override)该函数,可以实现多态。当通过基类指针或引用调用虚函数时,实际调用的是派生类中的函数版本,这种行为称为动态绑定(Dynamic Binding)或运行时多态(Runtime Polymorphism)。

代码解析

  1. 基类 Base:定义了一个虚函数 show(),该函数在派生类中可以被重写。
  2. 派生类 Derived:重写了基类的 show() 函数,提供了不同的实现。
  3. 多态调用:在 main 函数中,基类指针 basePtr 指向派生类对象 derivedObj,并通过该指针调用 show() 函数。由于 show() 是虚函数,实际调用的是派生类中的 show() 函数,输出结果为 "Derived class show function"

关键点

  • 虚函数:通过在基类中使用 virtual 关键字声明虚函数,允许派生类重写该函数。
  • 动态绑定:通过基类指针或引用调用虚函数时,实际调用的是派生类中的函数版本。
  • override 关键字:在派生类中重写虚函数时,可以使用 override 关键字来显式表明重写行为,增加代码的可读性和安全性。

通过多态,C++ 程序可以在运行时根据对象的实际类型来调用相应的函数,从而实现更灵活和可扩展的设计。

纠错
反馈