《C++ Primer》經典書店程式範例,展示 Sales_data 類的完整設計,涵蓋建構函數、運算子多載、友元函數、IO 操作等核心 C++ 特性。
bookNo)、銷售量 (units_sold)、總營收 (revenue)+=、+、==、!=、= (字串賦值)、流輸入輸出 >>/<<// 複合賦值運算子(成員函數)
Sales_data& operator+=(const Sales_data& rhs) {
units_sold += rhs.units_sold;
revenue += rhs.revenue;
return *this;
}
// 非成員加法運算子(對稱性)
Sales_data operator+(const Sales_data& lhs, const Sales_data& rhs) {
Sales_data sum = lhs;
sum += rhs;
return sum;
}
// 輸入運算子:讀取 ISBN、數量、單價 → 計算營收
std::istream& operator>>(std::istream& is, Sales_data& item) {
double price = 0;
is >> item.bookNo >> item.units_sold >> price;
if (is) item.revenue = item.units_sold * price;
else item = Sales_data(); // 輸入失敗重置
return is;
}
operator+ 等對稱運算avg_price() 定義為 inline 提升效能此類別可作為交易記錄系統的核心資料結構,支援多筆交易合併、比較、輸出格式化等業務操作,是掌握 C++ 類別設計的優秀練習案例。