习题
1.对9.1节中介绍的真实世界中的对象(如烤面包机)列出可能的操作。
2.设计并实现一个保存(名字,年龄)对的Name_pairs类,其中名字是一个string,年龄是一个double。将值对表示为一个名为name的vector<string>成员和一个名为age的vector<double>成员。提供一个输入操作read_name(),能读入一个名字列表。提供一个read_ages()操作,提示用户为每个名字输入一个年龄。提供一个print()操作,按name向量的顺序打印(name[i],age[i])对(每行一个值对)。提供一个sort()操作,将name向量按字典序排序,并重整age向量与name向量新顺序匹配。将所有“操作”实现为成员函数。测试这个类(当然,在设计过程中尽早测试并多测试)。
3.将Name_pairs::print()函数替换为(全局)运算符<<,并为Name_pairs定义==和!=运算符。
4.考察8.4节最后那个令人头痛的例子。给它加上适当的缩进和解释每个语法结构意义的注释。注意,这个例子并未做任何有意义的事情,它只是单纯为了说明令人困惑的代码风格。
5.此题和后面几题要求你设计并实现一个Book类,你可以设想这是图书馆软件系统的一部分。Book类应包含表示ISBN号、书名、作者和版权日期的成员,以及表示是否已经借出的成员。创建能返回这些成员的值的函数,以及借书和还书的函数。对于输入Book对象的数据进行简单的合法性检查,例如:只接受n-n-n-x形式的ISBN号,其中n是一个整数,x是一个数字或一个字母。将ISBN号存储为string。
6.为Book类添加运算符。添加==运算符,用于检查两本书的ISBN号是否相等。定义!=运算符,比较ISBN号是否不等。定义<<,分行输出书名、作者和ISBN号。 ...