日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

《C++ Primer》7.1.4节练习

發布時間:2023/12/4 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《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:

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) {is >> *this};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;//折扣 };

練習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节练习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。