首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 繼承與動態綁定核心機制詳解

     編輯:關於C++

繼承與動態綁定是面向對象編程的基石,本文通過代碼示例講解基類/派生類關係、虛函數覆寫、動態綁定析構、final 限定符等核心概念。

核心概念

  • 繼承:派生類擁有基類接口
  • 動態綁定:通過虛函數實現多態,運行時確定調用版本
  • 派生類 → 基類隱式轉換:派生類對象包含基類子對象
  • 虛析構函數:確保正確銷毀派生類對象
  • final 限定符:禁止進一步繼承

代碼示例

#include <iostream>
#include <string>
#include <cstddef>
using namespace std;

class Quote {
public:
    Quote() = default;
    Quote(const string& book, double sales_price) 
        : bookNo(book), price(sales_price) {}
    
    string isbn() const { return bookNo; }
    
    virtual double net_price(size_t n) const {  // 虛函數
        return n * price;
    }
    
    virtual ~Quote() = default;  // 動態綁定析構
    
private:
    string bookNo;
protected:
    double price = 0.0;
};

class Bulk_quote final : public Quote {  // final 禁止繼承
public:
    Bulk_quote() = default;
    Bulk_quote(const string& book, double p, size_t qty, double disc)
        : Quote(book, p), min_qty(qty), discount(disc) {}
    
    double net_price(size_t cnt) const override {  // 覆寫
        if (cnt >= min_qty)
            return cnt * (1 - discount) * price;
        else
            return cnt * price;
    }
    
private:
    size_t min_qty = 0;
    double discount = 0.0;
};

int main() {
    Quote q("CppPrimer", 99);
    Bulk_quote bq("CppPrimer", 99, 10, 0.5);
    size_t n = 20;
    
    cout << "We want to buy " << n << " books." << endl;
    cout << "Quote net_price : " << q.net_price(n) << endl;      // 1980
    cout << "Bulk_quote net_price : " << bq.net_price(n) << endl; // 990
    
    return 0;
}

關鍵點解析

  1. virtual 關鍵字啟用動態綁定,override 明確標註覆寫意圖
  2. 基類構造函數初始化基類部分,派生類構造函數調用基類構造
  3. protected 成員允許派生類訪問,private 不允許
  4. final 修飾類禁止繼承,修飾虛函數禁止覆寫
  5. 虛析構函數確保 delete 基類指針時正確調用派生類析構

掌握繼承與動態綁定是設計靈活、可擴展 C++ 系統的關鍵。

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