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

C++ 多態練習:從抽象基類 Human 派生 European 與 African

     編輯:程式設計綜合問答

題目要求

class Human {
public:
    virtual string getSkinColor() = 0;  // 純虛函數
};

派生 European 返回 "white",African 返回 "black"。

標準實現

#include <string>
using namespace std;

class European : public Human {
public:
    string getSkinColor() override { return "white"; }
};

class African : public Human {
public:
    string getSkinColor() override { return "black"; }
};

關鍵點

  1. override (C++11) 明確標記覆寫,編譯器會檢查簽名一致性。
  2. 返回 std::string 避免裸指針/數組生命週期問題。
  3. 析構函數無需重寫,基類虛析構確保正確釋放。

測試代碼

int main() {
    Human* people[] = { new European(), new African() };
    for (auto p : people) {
        cout << p->getSkinColor() << endl;
        delete p;
    }
    return 0;
}
// 輸出:
// white
// black

擴展:工廠模式創建

Human* createHuman(const string& region) {
    if (region == "Europe") return new European();
    if (region == "Africa") return new African();
    return nullptr;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved