C++ 面试题 目录

C++ 中如何实现多态?

推荐答案

在C++中,多态性主要通过虚函数和继承来实现。具体步骤如下:

  1. 基类中定义虚函数:在基类中声明一个虚函数,使用virtual关键字。
  2. 派生类中重写虚函数:在派生类中重写基类的虚函数,实现具体的功能。
  3. 通过基类指针或引用调用虚函数:使用基类指针或引用来调用虚函数,实际调用的是派生类中的重写函数。
-- -------------------- ---- -------
-------- ----------

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

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

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

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

    ------ --
-

本题详细解读

1. 虚函数的作用

虚函数是C++实现多态的关键。通过在基类中声明虚函数,派生类可以重写这些函数,从而实现不同的行为。虚函数允许在运行时根据对象的实际类型来调用相应的函数。

2. 虚函数表(vtable)

C++编译器为每个包含虚函数的类生成一个虚函数表(vtable)。vtable是一个函数指针数组,每个虚函数在表中都有一个对应的条目。当通过基类指针或引用调用虚函数时,编译器会通过vtable找到正确的函数实现。

3. 动态绑定

多态性依赖于动态绑定(也称为运行时绑定)。在编译时,编译器无法确定基类指针或引用指向的具体对象类型,因此在运行时通过vtable来确定调用哪个函数。

4. override关键字

C++11引入了override关键字,用于显式地标记派生类中重写的虚函数。这有助于防止因函数签名不匹配而导致的错误。

5. 纯虚函数与抽象类

如果基类中的虚函数没有实现,可以将其声明为纯虚函数。包含纯虚函数的类称为抽象类,不能实例化。派生类必须实现所有的纯虚函数才能实例化。

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

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

6. 多态的应用场景

多态性在面向对象编程中非常有用,特别是在需要处理多种类型对象的场景中。例如,图形应用程序中的不同形状(如圆形、矩形)可以通过基类指针统一管理,调用各自的绘制函数。

通过以上机制,C++实现了多态性,使得代码更加灵活和可扩展。

纠错
反馈