C++程序设计,课程代码4737,课后习题7答案

2018年3月13日19:56:40 发表评论 138 views

习题7

一、单项选择题

  1. 下面关于模板叙述不正确的是(A )。
    A. 不可以通过一个类来派生类模板  B. 可以从一个类模板派生出一个新的类模板  C. 类模板支持单一继承  D. 类模板可以有多个参数
  2. 需要一种逻辑功能一样的函数,而编制这些函数的程序文本完全一样,区别只是数据类型不同。对于这种函数,下面不能用来实现这一功能的选项是(A )。
    A. 宏函数  B. 为各种类型都重载这一函数  C. 模板  D. 友元函数
  3. 下面关于模板叙述不正确的是(B )。
    A. 可以使用派生  B. 可以有多个析构函数  C. 可以有多个构造函数  D. 可以有多个参数
  4. 在构造向量时,不正确的叙述是(D )。
    A. 可以使用基本数据类型  B. 可以使用类  C. 可以使用向量  D. 不可以使用容器
  5. 对一个向量来说,不正确的叙述是(D )。
    A. 向量的长度可变  B. 向量有返回无需再次分配内存就能容纳对象个数的成员函数capacity()
    C. 如果数量已满,当需要增加一个元素时,向量成员函数capacity()的长度自动增加  D. 如果数量已满,当需要增加一个元素时,capacity()的长度每次自动增加一个

二、填空题

  1. 返回向量中的最后一个对象的成员函数是 ,向向量尾部插入一个对象成员函数是     back()        
  2. 返回当前容器中已经存放的对象个数的成员函数是   push_back(const T&)     ,泛型指针有  2   种。
  3. 使用typedef定义逆向泛型指针的语句是   typedef vector<数据类型>::rever se_iterator reverse_iterator   

三、改错题

  1. 找出下面程序的错误并说明原因。
    template <typename T>
    class TAnyTemp {
            T x;
        public:
            TAnyTemp(T X) : x(X) {}
            void getx() { return x; }//error
    }

    答:void getx()返回类型有问题,应改为T getx();

  2. 找出下面程序中的错误并改正之。
    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型。

四、编程题

  1. 使用类模板演示赋值兼容性规则。
  2. 设计一个点的类模板,分别使用继承和包含的方法设计线段类模板,要求演示构造函数和复制构造函数的设计方法,并使用主程序验证之。
  3. 已知有一个整形数组a,其内容为1 3 5 7 9 2 4 6 8 10。先对数组进行升序排序,再使用它产生向量b,然后再在向量的尾部追回11,并按降序输出向量的内容和capacity()内容。
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的支付宝红包
  • 支付宝红包扫一扫打赏
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: