习题7
一、单项选择题
- 下面关于模板叙述不正确的是(A )。
A. 不可以通过一个类来派生类模板 B. 可以从一个类模板派生出一个新的类模板 C. 类模板支持单一继承 D. 类模板可以有多个参数 - 需要一种逻辑功能一样的函数,而编制这些函数的程序文本完全一样,区别只是数据类型不同。对于这种函数,下面不能用来实现这一功能的选项是(A )。
A. 宏函数 B. 为各种类型都重载这一函数 C. 模板 D. 友元函数 - 下面关于模板叙述不正确的是(B )。
A. 可以使用派生 B. 可以有多个析构函数 C. 可以有多个构造函数 D. 可以有多个参数 - 在构造向量时,不正确的叙述是(D )。
A. 可以使用基本数据类型 B. 可以使用类 C. 可以使用向量 D. 不可以使用容器 - 对一个向量来说,不正确的叙述是(D )。
A. 向量的长度可变 B. 向量有返回无需再次分配内存就能容纳对象个数的成员函数capacity()
C. 如果数量已满,当需要增加一个元素时,向量成员函数capacity()
的长度自动增加 D. 如果数量已满,当需要增加一个元素时,capacity()
的长度每次自动增加一个
二、填空题
- 返回向量中的最后一个对象的成员函数是 ,向向量尾部插入一个对象成员函数是 back() 。
- 返回当前容器中已经存放的对象个数的成员函数是 push_back(const T&) ,泛型指针有 2 种。
- 使用
typedef
定义逆向泛型指针的语句是 typedef vector<数据类型>::rever se_iterator reverse_iterator 。
三、改错题
- 找出下面程序的错误并说明原因。
template <typename T> class TAnyTemp { T x; public: TAnyTemp(T X) : x(X) {} void getx() { return x; }//error }
答:void getx()返回类型有问题,应改为T getx();
- 找出下面程序中的错误并改正之。
class Point { int x, y; public: Point(int a, int b) { x = a; y = b; } }; template <typename T> class Line : public Point { T x2, y2; public: Line(T a, T b, T c, T d) : Point(a, b) { x2 = c; y2 = d; }//error };
答:基类Point的构造方法是int型,所以在line中构造方法a,b应该是int型。
四、编程题
- 使用类模板演示赋值兼容性规则。
- 设计一个点的类模板,分别使用继承和包含的方法设计线段类模板,要求演示构造函数和复制构造函数的设计方法,并使用主程序验证之。
- 已知有一个整形数组
a
,其内容为1 3 5 7 9 2 4 6 8 10
。先对数组进行升序排序,再使用它产生向量b
,然后再在向量的尾部追回11
,并按降序输出向量的内容和capacity()
内容。
历史上的今天:
欢迎来到菜鸟头头的个人博客本文章百度已收录,若发现本站有任何侵犯您利益的内容,请及时邮件或留言联系,我会第一时间删除所有相关内容。