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

C++ 入門核心:類機制與 Sales_item 實戰詳解

     編輯:關於C++

在解決實際問題(如書店銷售統計)前,我們需要理解如何用 C++ 定義數據結構。類(class)是 C++ 最核心的特性之一,設計初衷是讓自定義類型的操作像內置類型一樣自然。標準庫中的 istream、ostream 等皆為類類型,而非語言內置關鍵字。

使用類需知的三要素

  1. 類名稱(如 Sales_item)
  2. 定義位置(如 Sales_item.h 頭文件)
  3. 支援的操作(運算符、成員函數等)

Sales_item 類設計目標

存儲 ISBN 並追蹤該書的銷售數量、總收入、平均售價。使用者無需關心內部實現細節,只需掌握其提供的操作介面。

頭文件包含規範

  • 標準庫頭文件:#include <iostream>(尖括號)
  • 自定義頭文件:#include "Sales_item.h"(雙引號)

Sales_item 對象的基本操作

操作說明
item1 + item2加法運算符:合併兩筆相同 ISBN 的銷售記錄
cin >> item輸入運算符:讀取 ISBN、銷量、單價
cout << item輸出運算符:輸出 ISBN、銷量、總收入、平均價
item1 = item2賦值運算符
item1.same_isbn(item2)成員函數:檢查 ISBN 是否相同

範例 1:讀取並輸出單筆記錄

#include <iostream>
#include "Sales_item.h"

int main() {
    Sales_item book;
    // 輸入格式:ISBN 銷量 單價
    // 例:0-201-70353-X 4 24.99
    std::cin >> book;
    // 輸出:ISBN 銷量 總收入 平均價
    // 例:0-201-70353-X 4 99.96 24.99
    std::cout << book << std::endl;
    return 0;
}

範例 2:合併兩筆相同 ISBN 記錄

#include <iostream>
#include "Sales_item.h"

int main() {
    Sales_item item1, item2;
    std::cin >> item1 >> item2; // 讀取兩筆記錄
    std::cout << item1 + item2 << std::endl; // 輸出合併結果
    return 0;
}

輸入:

0-201-78345-X 3 20.00
0-201-78345-X 2 25.00

輸出:

0-201-78345-X 5 110 22

注意:相加要求 ISBN 相同,結果反映合併後的銷量、總收入與平均價。

練習建議

  1. 編寫程序循環讀取多筆記錄並逐筆輸出。
  2. 讀取兩筆相同 ISBN 記錄並輸出合併結果。
  3. 讀取多筆相同 ISBN 記錄並輸出總和。

成員函數初探:same_isbn()

為處理不同 ISBN 記錄,需先判斷是否可合併:

#include <iostream>
#include "Sales_item.h"

int main() {
    Sales_item item1, item2;
    std::cin >> item1 >> item2;
    // 調用成員函數檢查 ISBN
    if (item1.same_isbn(item2)) {
        std::cout << item1 + item2 << std::endl;
        return 0; // 成功
    } else {
        std::cerr << "Data must refer to same ISBN" << std::endl;
        return -1; // 失敗
    }
}

成員函數調用語法

  • item1.same_isbn(item2):點運算符(.)訪問對象成員。
  • 左操作數必須是類對象,右操作數是成員名稱(非對象/值)。
  • 調用運算符 () 傳遞參數:same_isbn(item2)。

same_isbn 將參數 item2 的 ISBN 與調用對象 item1 的 ISBN 比較,返回 bool 結果。若相同則執行合併輸出,否則輸出錯誤信息並返回非零狀態碼。

類封裝的核心思想

類的作者定義了對象的所有合法操作(構造、賦值、運算符、成員函數等)。使用者只能通過類公開的介面操作對象,內部實現細節完全隱藏。這正是封裝的精髓:介面與實現分離。

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