博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++primer 14.2.1节练习
阅读量:4561 次
发布时间:2019-06-08

本文共 3195 字,大约阅读时间需要 10 分钟。

练习14.6

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 8 using namespace std; 9 10 class Sales_data {11 friend istream& operator >> (istream& is, Sales_data &s);12 friend ostream& operator<<(ostream& os, Sales_data s);13 public:14 Sales_data() : bookNo("") {}15 Sales_data(string s, unsigned us, double up) : bookNo(s), units_sold(us), units_price(up) {}16 Sales_data operator+(const Sales_data& s);17 Sales_data& operator+=(const Sales_data& s);18 private:19 string bookNo;20 unsigned units_sold = 0;21 double units_price = 0;22 };23 24 istream& operator >> (istream& is, Sales_data &s);25 ostream& operator<<(ostream& os, Sales_data s);26 27 int main()28 {29 Sales_data s1;30 Sales_data s2("C++ primer", 10, 128.2);31 cout << s2 << endl;32 s1 = s2;33 cout << s1 << endl;34 cout << s1 + s2 << endl;35 s1 += s2;36 cout << s1 << endl;37 cin >> s1;38 cout << s1;39 cout << s1 + s2 << endl;40 system("pause");41 return 0;42 }43 44 istream & operator >> (istream & is, Sales_data &s)45 {46 is >> s.bookNo >> s.units_sold >> s.units_price;47 return is;48 // TODO: 在此处插入 return 语句49 }50 51 ostream & operator<<(ostream & os, Sales_data s)52 {53 os << s.bookNo << " " << s.units_sold << " " << s.units_price;54 return os;55 // TODO: 在此处插入 return 语句56 }57 58 Sales_data & Sales_data::operator+=(const Sales_data & s)59 {60 if (bookNo == s.bookNo)61 {62 units_sold = units_sold + s.units_sold;63 return *this;64 }65 else66 {67 cout << "can not add" << endl;68 return *this;69 }70 // TODO: 在此处插入 return 语句71 }72 73 Sales_data Sales_data::operator+(const Sales_data & s)74 {75 if (bookNo == s.bookNo)76 {77 Sales_data ss;78 ss.bookNo = bookNo;79 ss.units_price = units_price;80 ss.units_sold = units_sold + s.units_sold;81 return ss;82 }83 else84 {85 cout << "error" << endl;86 return *this;87 }88 // TODO: 在此处插入 return 语句89 }

练习14.7

1 #include 
2 #include
3 #include
4 #include
5 #include
6 7 using namespace std; 8 9 class String {10 friend ostream &operator<<(ostream &os, String &s);11 public:12 String() : element(nullptr), first_free(nullptr) {}13 String(char *);14 private:15 static allocator
alloc;16 char *element;17 char *first_free;18 };19 allocator
String::alloc;20 ostream &operator<<(ostream &os, String &s);21 22 int main()23 {24 String s1;25 String s2("hello");26 String s3("hello world");27 cout << s1;28 cout << s2;29 cout << s3;30 system("pause");31 return 0;32 }33 34 String::String(char *s)35 {36 int i = 0;37 while (s[i] != '\0')38 ++i;39 auto newloc = alloc.allocate(i);40 auto dest = newloc;41 for (auto count = 0; count != i;++count)42 alloc.construct(dest++, s[count]);43 element = newloc;44 first_free = dest;45 }46 47 ostream & operator<<(ostream &os, String &s)48 {49 while (s.element != s.first_free)50 {51 os << *(s.element);52 s.element++;53 }54 cout << endl;55 return os;56 // TODO: 在此处插入 return 语句57 }

练习14.8

类似上题,很简单,细心注意一下就行了

转载于:https://www.cnblogs.com/wuyinfenghappy/p/7501830.html

你可能感兴趣的文章
C++的四种cast操作符的区别--类型转换
查看>>
基于jQuery实现文字倾斜显示代码
查看>>
《鸟哥的Linux私房菜 服务器架设篇(第三版)》 第15章 时间服务器:NTP服务器 笔记...
查看>>
记忆单词的方法
查看>>
第二章 函数
查看>>
一起做RGB-D SLAM (2)
查看>>
.net C#中页面之间传值传参的六种方法
查看>>
docker核心概念与配置安装
查看>>
html表格表单标签的结合
查看>>
blog Java-Jinguo
查看>>
bzoj省选十连测推广赛
查看>>
[bzoj1934][Shoi2007]Vote 善意的投票
查看>>
test
查看>>
poj 1730
查看>>
Java的内存回收机制
查看>>
【不积跬步,无以致千里】VIM查找替换归纳总结zz
查看>>
javascript实现渐隐渐现上下循环滚动
查看>>
c语言之函数
查看>>
C语言经典算法100例-072-创建一个链表
查看>>
Data Guard 管理原理
查看>>