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

2018年3月8日21:08:35 1 375 views

习题6

一、填空题

  1. 多重继承可以视为是     单一继承    的扩展。
  2. 访问控制权限是   public,protected,private             3种。

二、单项选择题

  1. 保证编译器正确调用成员函数的规则是( C)。
    A. 赋值兼容  B. 继承  C. 作用域  D. 支配
  2. 下面叙述不正确的是(A )。
    A. 基类的保护成员在派生类中仍然是保护的。  B. 基类的保护成员在公有派生类中仍然是保护的。
    C. 基类的保护成员在私有派生类中是私有的。  D. 对基类成员的访问必须是无二义性的。
  3. 下面叙述不正确的是( C)。
    A. 成员的访问能力在私有派生类中和公有派生类中是不同的。  B. 基类的私有成员在派生类中不可访问。
    C. 赋值兼容规则不适用于多重继承的组合。  D. 公有基类成员在保护派生类中是保护的。
  4. 下面叙述不正确的是( )。 error:本题应为,下面叙述正确的是( A)
    A. 派生类可以有自己的构造函数  B. 派生类继承基类的构造函数
    C. 派生类继承基类的析构函数  D. 派生类只能继承基类的一个构造函数

三、改错题

  1. 改正类定义中的错误。
    class base {
            int m;
        public:
            base(int a) : m(a);
            int Getx() { return m; }
    };
    class derived : private base {
        public:
        	//error1:派生类不能访问基类的私有成员
        	//error2:{};分号没有意义,编译错误
        	//正确应为:derived(int b) : base(b) {}
            derived(int b) : m(b) {};
    };

     

  2. 下面的程序含有二义性,要求不修改主程序,通过重定义成员函数Show的方法解决名字冲突。
    #include <iostream.h>
    class Base1 {
        protected:
            int m;
        public:
            void Show() { cout << m << endl; }
    };
    class Base2 {
        protected:
            int n;
        public:
            void Show() { cout << n << endl; }
    };
    class Derived : public Base1, public Base2 {
        public:
            void Set(int x, int y) { m = x; n = y; }
            /*
            void Show(){cout<<"m:"<<m<<","<<"n:"<<n<<endl;}
            //在派生类中增加对Show函数的冲定义,解决二义性问题  
            //也可改为:void Show(){Base1::Show();Base2::Show();}
            */
    };
    void main() {
        Derived Obj;
        Obj.Set(45, 87);
        Obj.Show();
        Obj.Base1::Show();
    }

     

四、编程题

  1. 设计一个基类,从基类派生圆,从圆派生圆柱,设计成员函数输出它们的面积和体积。
  2. 下面是某公司经理、兼职人员、销售经理和销售员的工资计算方法,设计合适的基类和派生类,实现这一工资管理任务。
  3. 定义一个线段类为矩形的基类,基类有起点和终点坐标,有输出坐标和长度以及线段和x轴的夹角的成员函数。矩形类用线段对象的两个坐标作为自己一条边的位置,它具有另外一个边长,能输出矩形的4个顶点坐标。给出类的定义并用程序验证他们的功能。
  4. 基类是使用极坐标的点类,从它派生一个圆类,圆类用点类的坐标作为圆心,圆周通过极坐标原点,圆类有输出圆心直角坐标、圆半径和面积成员函数。完成类的设计并验证之一。
  5. 设计一个线段基类,当创建无参数对象时,才要求用户输入长度。同样,其派生的直角三角形类也是产生对象时要求输入两个直角边的长度。直角三角形再派生矩形类,矩形类的参数也由键盘输入。设计这些类并测试它们的功能。


欢迎来到菜鸟头头的个人博客,下方有我的微信二维码,有兴趣的朋友可以加我好友,咱们一起交流探讨。
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的支付宝红包
  • 支付宝红包扫一扫打赏
  • weinxin

发表评论

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

目前评论:1   其中:访客  1   博主  0

    • avatar 玩游戏赚钱 2

      记得以前什么语言都学过,都会hello world ,现在连TM hello world 都不会了