第十四章 14.4节练习

来源:互联网 发布:java的构造方法 编辑:程序博客网 时间:2024/05/16 19:44

练习14.20

为你的Sales_data类定义加法和复合运算符。

解答:

符合运算符可以参考书中实现。之后,通过调用复合运算符来实现加法运算符。


练习14.21

编写Sales_data类的+和+=运算符,使得+执行实际的加法操作而+=调用+。相比14.3节(第497页)和14.4节(第500页)对这两个运算符的定义,本体的定义有何缺点?试讨论。

解答:

<pre name="code" class="cpp">Sales_data Sales_data::operator+(const Sales_data &rhs){        Sales_data sum;sum.units_sold = units_sold + rhs.units_sold;sum.revenue = revenue + rhs.revenue;return sum;}

Sales_data& Sales_data::operator+=(const Sales_data &rhs){*this = *this + rhs;return *this;}

这个实现比较其前面的实现,多了很多不必要的拷贝步骤和创建Sales_data的步骤,在性能上没有前面版本来得高效。


练习14.22

定义赋值运算符的一个新版本,使得我们能把一个表示ISBN的string赋给Sales_data对象。

解答:

Sales_data& Sales_data::operator=(string& str){bookNo = str;return *this;}
不过感觉没这么简单,但是用initializer_list又不大可能(参数类型不一),就写了这个简单的实现,感觉有点怪。


练习14.23

为你的StrVec类定义一个initializer_list赋值运算符。

解答:

参考书中500页的实现。


练习14.24


练习14.25



0 0
原创粉丝点击