C++primer 7.5.2節練習

來源:互聯網
上載者:User

標籤:blog   one   函數   name   預設   end   一個   add   unit   

練習7.41

  1 #include <iostream>  2 #include <string>  3 #include "factmain.h"  4 using namespace std;  5   6 struct Sales_data {  7     friend ostream &print(ostream &os, const Sales_data &item);  8     friend istream &read(istream &is, Sales_data &item);  9 private: 10     string bookNo; 11     unsigned units_sold; 12     double price; 13     double revenue; 14     double avg_price() const; 15 public: 16     Sales_data(const string &s, const unsigned &u, const double &p) : bookNo(s), units_sold(u), price(p) { cout << "one" << endl; } 17     Sales_data() : Sales_data("12345", 3, 12) { cout << "使用的是委託建構函式構造預設建構函式" << endl; } 18     Sales_data(string s) : Sales_data(s, 2, 4) { cout << "僅僅輸入一個字串" << endl; } 19     //Sales_data(const string &s, const unsigned &u) : bookNo(s), units_sold(u) {} 20     Sales_data(istream &is) : Sales_data() { read(is, *this); cout << "最後一種" << endl; } 21     string  isbn() const { return bookNo; } 22     unsigned &rUnit() { return units_sold; } 23     double &rPrice() { return price; } 24     double &rRevenue() { return revenue; } 25     Sales_data &combine(const Sales_data&); 26  27 }; 28  29 Sales_data add(const Sales_data &lhs, const Sales_data &rhs); 30 ostream &print(ostream &os, const Sales_data &item); 31 istream &read(istream &is, Sales_data &item); 32  33  34 int main()                                                                            //main函數的部分需要改變 35 { 36     Sales_data s1; 37     Sales_data s2("123", 2, 3); 38     Sales_data s3("12"); 39     Sales_data s4(cin); 40     /*Sales_data test1("hello",56); 41     print(cout, test1); 42     Sales_data item1(cin); 43     Sales_data item2; 44     double totalRevenue = 0; 45     double totalSold = 0; 46     int counter = 1; 47     if ((item1.isbn()).empty()) 48     { 49         item1.rRevenue() = item1.rPrice() * item1.rUnit(); 50         while (read(cin,item2)) { 51             item2.rRevenue() = item2.rPrice() * item2.rUnit(); 52             if (item1.isbn() == item2.isbn()) { 53                 item1.combine(item2); 54                 ++counter; 55             } 56             else { 57                 print(cout, item1) << endl; 58                 item1.isbn() = item2.isbn(); 59                 item1.rUnit() = item2.rUnit(); 60                 item1.rRevenue() = item2.rRevenue(); 61                 counter = 1; 62             } 63         } 64         print(cout, item2) << endl; 65     }*/ 66     system("pause"); 67     return 0; 68 } 69  70 Sales_data add(const Sales_data & lhs, const Sales_data & rhs) //非成員函數add 71 { 72     Sales_data sum = lhs; 73     sum.combine(rhs); 74     return sum; 75     // TODO: 在此處插入 return 語句 76 } 77  78 istream & read(istream & is, Sales_data & item) 79 { 80     is >> item.bookNo >> item.units_sold >> item.price; 81     item.revenue = item.units_sold * item.price; 82     return is; 83     // TODO: 在此處插入 return 語句 84 } 85  86 ostream & print(ostream & os, const Sales_data & item) 87 { 88     os << item.bookNo << " " << item.units_sold << " " << item.price << " " << item.revenue; 89     return os; 90     // TODO: 在此處插入 return 語句 91 } 92  93 Sales_data & Sales_data::combine(const Sales_data &rhs) 94 { 95     units_sold += rhs.units_sold; 96     revenue += rhs.revenue; 97     return *this; 98 } 99 100 inline double Sales_data::avg_price() const101 {102     return units_sold ? revenue/units_sold : 0;103 }

練習7.42

 1 #include <iostream> 2 #include <string> 3 using namespace std; 4  5 class Date { 6 public: 7     Date(unsigned y, unsigned m, unsigned d, const string &s) : years(y), mon(m), days(d), weather(s) {}; 8     Date() : Date(2000, 1, 1, "good") {} 9     Date(string &s) : Date(1999, 9, 9, s) {}10 11 private:12     unsigned years;13     unsigned mon;14     unsigned days;15     string weather;16 };

 

C++primer 7.5.2節練習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.