C++primer 14.3节练习

练习14.13

对于Sales_data类来说,没有其他的算术运算符需要重载了,对于其它的运算没有意义;

练习14.14

首先operator+有两个参数,其参数类型为const,是不需要改变的,其返回类型为Sales_data类型的一个拷贝。不过每次都需要在函数体内定义一个临时变量,用来返回拷贝。

而operator+=有一个参数,其参数类型为const,不需要改变,其返回类型为Sales_data类型的引用。每次不需要在函数内创建临时变量,直接可返回*this。

如果用operator+来定义operator+=的话,则不论调用operator+还是operator+=,每次都会创建一个Sales_data的临时变量。

练习14.15

时间: 2024-10-16 03:13:53

C++primer 14.3节练习的相关文章

14.1节:InnoDB简介

14.1.1. InnoDB-MySQL默认的存储引擎 14.1.2. 检测InnoDB的可用性 14.1.3. 关闭InnoDB InnoDB是一个兼顾高可靠性和高性能的通用存储引擎.在MySQL5.5中InnoDB是默认的存储引擎.在MySQL5.7中 执行Create Table语句的时候如果不是用engine=语句来指定所使用的存储引擎,那么默认将会使用InnoDB存储引擎.如 下图1实验结果即可证明 mysql> create table innodb( -> id int prim

C++primer 14.2.1节练习

练习14.6 1 #include <iostream> 2 #include <string> 3 #include <memory> 4 #include <vector> 5 #include <algorithm> 6 #include <numeric> 7 8 using namespace std; 9 10 class Sales_data { 11 friend istream& operator >&

C++primer 14.3.1节练习

练习14.16 1 #include <iostream> 2 #include <string> 3 #include <utility> 4 #include <memory> 5 #include <algorithm> 6 7 using namespace std; 8 9 class String { 10 friend ostream &operator<<(ostream &os, String &am

C++primer 14.2.2节练习

练习14.9 1 istream &operator >> (istream &is, Sales_data &item) 2 { 3 double price; 4 is >> item.bookNo >> item.units_sold >> price; 5 if (is) 6 item.revenue = item.units_sold * price; 7 else 8 item = Sales_data(); 9 retu

C++primer 15.3节练习

练习15.11 1 #include <iostream> 2 #include <string> 3 #include <utility> 4 #include <memory> 5 #include <vector> 6 7 using namespace std; 8 9 class Quote { 10 public: 11 Quote() = default; 12 Quote(const string &book, doubl

C++primer 15.8节练习

练习15.28 1 #include <iostream> 2 #include <string> 3 #include <utility> 4 #include <memory> 5 #include <vector> 6 7 using namespace std; 8 9 class Quote { 10 public: 11 Quote() : bookNo(""), price(0.0) { cout <<

C++primer 15.4节练习

练习15.15.练习15.16 1 #include <iostream> 2 #include <string> 3 #include <utility> 4 #include <memory> 5 #include <vector> 6 7 using namespace std; 8 9 class Quote { 10 public: 11 Quote() = default; 12 Quote(const string &boo

[c++primer][14]重载操作符与转换

14.1 重载操作符的定义 不能重载的操作符:.  ?:  sizeof  ::  .* 不能为任何内置类型定义额外的新的操作符:优先级和结合性是固定的:不再具备短路求值特性(不建议重载&&.||.逗号): 一般将算术和关系操作符定义为非成员函数,而将赋值操作符定义为成员: 使用重载操作符的方式: 1)  与内置类型使用操作符方式一样: 2)  也可像调用普通函数一样调用重载操作符函数,指定函数并传递适当类型适当数目的形参: item1 += item2; // expression ba

C++primer 15.5节练习

练习15.18 只有当派生类公有继承基类时,用户代码才能使用派生类向基类的转换:B &tb=D; Base *p=&d1; 正确,Pub_Derv是公有继承Base p=&d2; 错误,Priv_Derv是私有继承Base p=&d3; 错误,Prot_Dery是保护继承Base p=&dd1; 正确,Derived_from_Public是公有继承于Pub_Dery的 p=&dd2; 错误,Priv_Derv是私有继承于Base p=&dd3; 错