当前位置:嗨网首页>书籍在线阅读

41-复习题

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

16.9 复习题

1.考虑下面的类声明:

class RQ1
{
private:
    char * st; // points to C-style string
public:
    RQ1() { st = new char [1]; strcpy(st,""); }
    RQ1(const char * s)
    {st = new char [strlen(s) + 1]; strcpy(st, s); }
    RQ1(const RQ1 & rq)
    {st = new char [strlen(rq.st) + 1]; strcpy(st, rq.st); }
    ~RQ1() {delete [] st};
    RQ & operator=(const RQ & rq);
    // more stuff
};

将它转换为使用string对象的声明。哪些方法不再需要显式定义?

2.在易于使用方面,指出string对象至少两个优于C-风格字符串的地方。

3.编写一个函数,用string对象作为参数,将string对象转换为全部大写。

4.从概念上或语法上说,下面哪个不是正确使用auto_ptr的方法(假设已经包含了所需的头文件)?

auto_ptr<int> pia(new int[20]);
auto_ptr<string> (new string);
int rigue = 7;
auto_ptr<int>pr(&rigue);
auto_ptr dbl (new double);

5.如果可以生成一个存储高尔夫球棍(而不是数字)的栈,为何它(从概念上说)是一个坏的高尔夫袋子?

6.为什么说对于逐洞记录高尔夫成绩来说,set容器是糟糕的选择?

7.既然指针是一个迭代器,为什么STL设计人员没有简单地使用指针来代替迭代器呢?

8.为什么STL设计人员仅定义了迭代器基类,而使用继承来派生其他迭代器类型的类,并根据这些迭代器类来表示算法?

9.给出vector对象比常规数组方便的3个例子。

10.如果程序清单16.9是使用list(而不是vector)实现的,则该程序的哪些部分将是非法的?非法部分能够轻松修复吗?如果可以,如何修复呢?

11.假设有程序清单16.15所示的函数符TooBig,下面的代码有何功能?赋给bo的是什么值?

bool bo = TooBig<int>(10)(15);