《C++ Primer》7.1.4节练习
生活随笔
收集整理的這篇文章主要介紹了
《C++ Primer》7.1.4节练习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
練習7.11:
#include <iostream> #include <cstring> using namespace std;class Sales_data {public:Sales_data() = default;Sales_data(const std::string &book): bookNo(book) {}Sales_data(const std::string &book, const unsigned num, const double sellp, const double salep);Sales_data(std::istream &is);public:std::string isbn()const {return bookNo;}public:std::string bookNo;//書籍編號unsigned units_sold = 0;//銷售量double sellingprice = 0.0;//原始價格double saleprice = 0.0;//實際價格double discount = 0.0;//折扣 };std::istream &operator>>(std::istream &in, Sales_data &s) {in >> s.bookNo >> s.units_sold >> s.sellingprice >> s.saleprice;if (in && s.sellingprice != 0)s.discount = s.saleprice / s.sellingprice;elses = Sales_data();return in; }std::ostream &operator<<(std::ostream &out, const Sales_data &s) {out << s.isbn() << " " << s.units_sold << " " << s.sellingprice << " " << s.saleprice << " " << s.discount;return out; }Sales_data::Sales_data(const std::string &book, const unsigned num, const double sellp, const double salep) {bookNo = book;units_sold = num;sellingprice = sellp;saleprice = salep;if (sellingprice != 0)discount = saleprice / sellingprice; }Sales_data::Sales_data(std::istream &is) {is >> *this; }int main() {Sales_data data1;Sales_data data2("978-7-121-15535-2");Sales_data data3("978-7-121-15535-2", 100, 128, 109);Sales_data data4(cin);cout << "書籍的銷售情況:" << endl;cout << data1 << endl;cout << data2 << endl;cout << data3 << endl;cout << data4 << endl;return 0;}在類的定義中,我們設計了4個構造函數。
第一個構造函數是默認構造函數,它使用了C++11新標準提供的=default。它的參數列表為空,即不需要我們提供任何數據也能構造一個對象。
第二個構造函數只接受一個const string&,表示書籍的ISBN編號,編譯器賦予其他數據成員類內初始值。
第三個構造函數接受完整的銷售記錄信息,const string&表示書籍的ISBN編號,const unsigned表示銷售量,后面兩個const double分別表示書籍的原價和實際售價。
最后一個構造函數接受istream&并從中讀取書籍的銷售信息。
我們在main函數中創建4個Sales_data對象并依次輸出其內容,上面定義的構造函數各被用到了一次。
測試結果:
練習7.12:
練習7.13:
#include <iostream> #include "Sales_data.h" using namespace std;int main() {cout<<"請輸入交易記錄(ISBN,銷售額,原價,實際售價):"<<endl;Sales_data total(cin);if (cin)){Sales_data trans(cin);do{if (total.isbn()==trans.isbn())total.combine(trans);else{print(cout,total);cout<<endl;total = trans;}}while(read(cin,trans));print(cout,total);cout<<endl;}else{cerr<<"No data?!"<<endl;return -1;}return 0; }練習7.14:
Sales_data (const std::string &book):bookNo(book),units_sold(0),sellingprice(0),saleprice(0),discount(0){ }練習7.15:
#include <iostream> #include <string> using namespace std; class Person {private:string strName;string strAddress;public:Person() = default;Person(const string &name,const string &add){strName = name;strAddress = add;}Person(std::istream &is){is>>*this;} //這里的<<需要重載public:string getName()const{return strName;}string getAddress() const{return strAddress;} };總結
以上是生活随笔為你收集整理的《C++ Primer》7.1.4节练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《C++ Primer》7.1.3节练习
- 下一篇: 《C++ Primer》7.2节练习