《C++ Primer》7.1.4节练习
生活随笔
收集整理的這篇文章主要介紹了
《C++ Primer》7.1.4节练习
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
練習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;}在類的定義中,我們設(shè)計了4個構(gòu)造函數(shù)。
第一個構(gòu)造函數(shù)是默認構(gòu)造函數(shù),它使用了C++11新標準提供的=default。它的參數(shù)列表為空,即不需要我們提供任何數(shù)據(jù)也能構(gòu)造一個對象。
第二個構(gòu)造函數(shù)只接受一個const string&,表示書籍的ISBN編號,編譯器賦予其他數(shù)據(jù)成員類內(nèi)初始值。
第三個構(gòu)造函數(shù)接受完整的銷售記錄信息,const string&表示書籍的ISBN編號,const unsigned表示銷售量,后面兩個const double分別表示書籍的原價和實際售價。
最后一個構(gòu)造函數(shù)接受istream&并從中讀取書籍的銷售信息。
我們在main函數(shù)中創(chuàng)建4個Sales_data對象并依次輸出其內(nèi)容,上面定義的構(gòu)造函數(shù)各被用到了一次。
測試結(jié)果:
練習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;} };總結(jié)
以上是生活随笔為你收集整理的《C++ Primer》7.1.4节练习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《C++ Primer》7.1.3节练习
- 下一篇: 一加12旗舰手机正式官宣 12月4日见