8.6.2 定义问题
箱子的首要功能是包含这种或那种对象,因此一言以蔽之:这是个包装问题。我们将尝试提供一个大体上使包装工作更容易的类,然后看一看如何来使用它。我们假设人们总是将CBox对象打包到其他CBox对象中,因为如果我们希望将糖果包装到箱子中,那么总能将每块糖果表示成理想化的CBox对象。我们希望在CBox类中提供的基本操作包括:
计算CBox的体积。体积是CBox对象的基本特性,我们已经有实现该功能的函数。
比较两个CBox对象的体积,以确定哪个更大。我们应该为CBox对象实现一套完整的比较运算符,目前已经有>运算符的版本。
比较CBox对象的体积与指定的数值,反之亦然。我们已经为>运算符实现了该功能,但还需要实现支持其他比较运算符的函数。
将两个CBox对象相加,将产生包含原来两个对象的CBox对象。因此,结果至少将是原来两个体积的和,也可能更大。我们已经有重载+运算符的该功能的函数版本。
使CBox对象乘以一个整数(反之亦然),以提供一个CBox对象来包含指定数量的原对象。这实际上是在设计一个纸板箱。
确定有多少个给定尺寸的CBox对象可以放入另一个给定尺寸的CBox对象。该功能实际上是除法问题,因此可以通过重载/运算符来实现。
确定放入最大数量给定尺寸的CBox对象之后,CBox对象中剩余的空间。
我们最好就此打住!无疑还有其他可能非常有用的功能,但为了节省篇幅,我们将只考虑完成上面这些功能,不考虑诸如访问尺寸之类的附属功能。