首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ 指針多態實戰:基類指針指向派生類對象的經典範例

     編輯:程式設計疑難解答

C++ 指針與多態核心概念

在 C++ 中,指針是實現多態的關鍵機制之一。通過基類指針指向派生類對象,可以在運行時動態綁定正確的虛函數,從而實現「一個接口,多種實現」的靈活設計。

經典代碼示例

#include <Windows.h>
#include <string>
#include <iostream>
using namespace std;

class A {
public:
    virtual string GetName() = 0;
};

class B : public A {
public:
    virtual string GetName() { return "B"; }
};

class C : public A {
public:
    virtual string GetName() { return "C"; }
};

int main() {
    B b;
    C c;
    int nIndex;
    cin >> nIndex;
    A* p = NULL;
    if (nIndex == 0)
        p = &b;
    else
        p = &c;
    cout << p->GetName().c_str() << endl;
    return 0;
}

代碼解析

  • 抽象基類 A:定義了純虛函數 GetName(),強制派生類實現。
  • 派生類 B 和 C:分別重寫 GetName(),返回各自的標識字符串。
  • 主函數邏輯:根據用戶輸入的索引,讓基類指針 p 指向不同的派生類對象(&b 或 &c)。
  • 動態綁定:調用 p->GetName() 時,編譯器生成虛函數表查找代碼,根據對象實際類型調用相應版本。

關鍵點總結

  1. 基類指針可以指向派生類對象(向上轉型)。
  2. 虛函數確保調用的是對象實際類型的方法,而非指針類型的方法。
  3. 這是運行時多態的基礎,廣泛應用於插件架構、策略模式等場景。

掌握這一模式,能幫助你編寫更具擴展性和可維護性的 C++ 代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved