第十四章 14.4节练习

练习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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值