zoukankan      html  css  js  c++  java
  • c++面向对象程序设计 谭浩强 第五章答案

    1:

    #include <iostream>

    using namespace std;

    class Student

    {public:

      void get_value()

       {cin>>num>>name>>sex;}

      void display( )

        {cout<<"num: "<<num<<endl;

         cout<<"name: "<<name<<endl;

         cout<<"sex: "<<sex<<endl;}

     private :

       int num;

       char name[10];

       char sex;

    };   

    class Student1: public Student

     {public:

       void get_value_1()

        {get_value();

         cin>>age>>addr;}

       void display_1()

       {   cout<<"age: "<<age<<endl;          //引用派生类的私有成员,正确。

           cout<<"address: "<<addr<<endl;}    //引用派生类的私有成员,正确。

      private:

           int age;

           char addr[30];

     };

    int  main()

    {Student1 stud1;

      stud1.get_value_1();

      stud1.display();

      stud1.display_1();

      return 0;

    }

    2:

    #include <iostream>

    using namespace std;

    class Student

    {public:

      void get_value()

       {cin>>num>>name>>sex;}

      void display( )

        {cout<<"num: "<<num<<endl;

         cout<<"name: "<<name<<endl;

         cout<<"sex: "<<sex<<endl;}

     private :

       int num;

       char name[10];

       char sex;

    };   

    class Student1: private Student

     {public:

       void get_value_1()

        {get_value();

         cin>>age>>addr;}

       void display_1()

           {display();

           cout<<"age: "<<age<<endl;        //引用派生类的私有成员,正确。

           cout<<"address: "<<addr<<endl;}    //引用派生类的私有成员,正确。

      private:

           int age;

        char addr[30];

     };

    int main()

     {Student1 stud1;

      stud1.get_value_1();

      stud1.display_1();

      return 0;

    }

    3:

    #include <iostream>

    using namespace std;

    class Student                        //声明基类

    {public:                             //基类公用成员

      void get_value();

      void display( );

     protected :                         //基类保护成员

        int num;

        char name[10];

        char sex;

    };

    void Student::get_value()

     {cin>>num>>name>>sex;}

    void Student::display( )

     {cout<<"num: "<<num<<endl;

      cout<<"name: "<<name<<endl;

      cout<<"sex: "<<sex<<endl;

     }

    class Student1: protected Student              //声明一个保护派生类

    {public:

       void get_value_1();

       void display1( );

    private:

       int age;                          

       char addr[30];

    };

    void Student1::get_value_1()

     {get_value();

      cin>>age>>addr;

     }

    void Student1::display1( )

      {cout<<"num: "<<num<<endl;         //引用基类的保护成员

       cout<<"name: "<<name<<endl;       //引用基类的保护成员

       cout<<"sex: "<<sex<<endl;         //引用基类的保护成员

       cout<<"age: "<<age<<endl;         //引用派生类的私有成员

       cout<<"address: "<<addr<<endl;    //引用派生类的私有成员

      }

    int main( )

     {Student1 stud1;                      //stud1是派生类student1类的对象

      stud1.get_value_1();                 //调用派生类对象stud1的公用成员函数

      stud1.display1( );                   //调用派生类对象stud1的公用成员函数

      return 0;

     }

    4: 解法一

    #include <iostream>

    using namespace std;

    class Student//声明基类

    {public:                             //基类公用成员

      void get_value();

      void display( );

     protected :                         //基类保护成员

        int num;

        char name[10];

        char sex;

    };

    void Student::get_value()

     {cin>>num>>name>>sex;}

    void Student::display( )

     {cout<<"num: "<<num<<endl;

      cout<<"name: "<<name<<endl;

      cout<<"sex: "<<sex<<endl;

     }

    class Student1: public Student              //声明一个公用派生类

    {public:

       void get_value_1();

       void display1( );

     private:

       int age;                          

       char addr[30];

    };

    void Student1::get_value_1()

     {get_value();

      cin>>age>>addr;

     }

    void Student1::display1( )

      {cout<<"num: "<<num<<endl;     //引用基类的保护成员,合法

       cout<<"name: "<<name<<endl;       //引用基类的保护成员,合法

       cout<<"sex: "<<sex<<endl;         //引用基类的保护成员,合法

       cout<<"age: "<<age<<endl;         //引用派生类的私有成员,合法

       cout<<"address: "<<addr<<endl;    //引用派生类的私有成员,合法

      }

    int main( )

     {Student1 stud1;                      //stud1是派生类student1类的对象

      stud1.get_value_1();                 //调用派生类对象stud1的公用成员函数get_value_1

      stud1.display1( );                   //调用派生类对象stud1的公用成员函数display1

      return 0;

     }

    解法二

    #include <iostream>

    using namespace std;

    class Student                        //声明基类

    {public:                             //基类公用成员

      void get_value();

      void display( );

     protected :                         //基类保护成员

        int num;

        char name[10];

        char sex;

    };

      

    void Student::get_value()

     {cin>>num>>name>>sex;}

    void Student::display( )

     {cout<<"num: "<<num<<endl;

      cout<<"name:"<<name<<endl;

      cout<<"sex:"<<sex<<endl;

     }

    class Student1: protected Student              //声明一个公用派生类

    {public:

       void get_value_1();

       void display1( );

     private:

       int age;                          

       char addr[30];

    };

    void Student1::get_value_1()

     {cin>>age>>addr;}

    void Student1::display1( )

      {cout<<"age:"<<age<<endl;

       cout<<"address:"<<addr<<endl;

      }

    int main( )

     {Student1 stud1;                      //stud1是派生类student1类的对象

      stud1.get_value();

    stud1.get_value_1();

      stud1.display( );

      stud1.display1();                  //合法。display1是派生类中的公用成员函数

      return 0;

     }

    5:

    class A                   //A为基类

    {public:

      void f1( );

      int i;

     protected:

      void f2();

      int j;

     private:

      int k;

    };

    class B: public A            //B为A的公用派生类

    {public:

      void f3( );

     protected:

      int m;

     private:

      int n;

    };

    class C: public B              //C为B的公用派生类

    {public:

      void f4();

     private:

      int p;

    };

    int main()

    {A a1;                         //a1是基类A的对象

     B b1;                         //b1是派生类B的对象

     C//c1是派生类C的对象

     return 0;

    }

    6:

    #include <iostream>

    using namespace std;

    class A

    {public:

      void f1( );

     protected:

      void f2();

     private:

      int i;

    };

    class B: public A

    {public:

      void f3( );

      int k;

     private:

      int m;

    };

    class C: protected B

    {public:

      void f4();

     protected:

      int n;

     private:

      int p;

    };

    class D: private C

    {public:

      void f5();

     protected:

      int q;

     private:

      int r;

    };

    int main()

    {A a1;

     B b1;

         C c1;

     D d1;

     return 0;

    }

    7:

    #include <iostream>

    using namespace std;

    class A

     {

      public:

       A(){a=0;b=0;}

       A(int i){a=i;b=0;}

       A(int i,int j){a=i;b=j;}

       void display(){cout<<"a="<<a<<" b="<<b;}

      private:

       int a;

       int b;

     };

    class B  : public A

     {

      public:

       B(){c=0;}

       B(int i):A(i){c=0;}

       B(int i,int j):A(i,j){c=0;}

       B(int i,int j,int k):A(i,j){c=k;}

       void display1()

        {display();

         cout<<" c="<<c<<endl;

        }

       private:

        int c;

    };

    int main()

    {   B b1;

        B b2(1);

        B b3(1,3);

        B b4(1,3,5);

        b1.display1();

             b2.display1();

        b3.display1();

        b4.display1();

    return 0;

    }

    8:

    #include <iostream>

    using namespace std;

    class A

     {

      public:

       A(){cout<<"constructing A "<<endl;}

       ~A(){cout<<"destructing A "<<endl;}

     };

    class B  : public A

     {

      public:

       B(){cout<<"constructing B "<<endl;}

       ~B(){cout<<"destructing B "<<endl;}

    };

    class C  : public B

     {

      public:

       C(){cout<<"constructing C "<<endl;}

       ~C(){cout<<"destructing C "<<endl;}

    };

    int main()

    { C c1;

      return 0;

    }

               9:

    #include<string>

    #include <iostream>

    using namespace std;

    class Teacher

     {public:

       Teacher(string nam,int a,char s,string tit,string ad,string t);

       void display();

      protected:

        string name;

        int age;

        char sex;

        string title;

        string addr;

        string tel;

    };

    Teacher::Teacher(string nam,int a,char s,string tit,string ad,string t):

         name(nam),age(a),sex(s),title(tit),addr(ad),tel(t){ }

    void Teacher::display()

         {cout<<"name:"<<name<<endl;

          cout<<"age"<<age<<endl;

          cout<<"sex:"<<sex<<endl;

          cout<<"title:"<<title<<endl;

          cout<<"address:"<<addr<<endl;

          cout<<"tel:"<<tel<<endl;

          }

    class Cadre

     {public:

    Cadre(string nam,int a,char s,string p,string ad,string t);

       void display();

      protected:

       string name;

       int age;

       char sex;

       string post;

       string addr;

       string tel;

     };

    Cadre::Cadre(string nam,int a,char s,string p,string ad,string t):

         name(nam),age(a),sex(s),post(p),addr(ad),tel(t){}

    void Cadre::display()

        {cout<<"name:"<<name<<endl;

         cout<<"age:"<<age<<endl;

         cout<<"sex:"<<sex<<endl;

         cout<<"post:"<<post<<endl;

         cout<<"address:"<<addr<<endl;

         cout<<"tel:"<<tel<<endl;

        }

    class Teacher_Cadre:public Teacher,public Cadre

     {public:

       Teacher_Cadre(string nam,int a,char s,string tit,string p,string ad,string t,float w);

       void show( );

      private:

        float wage;

     };

    Teacher_Cadre::Teacher_Cadre(string nam,int a,char s,string t,string p,string ad,string tel,float w):

      Teacher(nam,a,s,t,ad,tel),Cadre(nam,a,s,p,ad,tel),wage(w) {}

    void Teacher_Cadre::show( )

        {Teacher::display();

         cout<<"post:"<<Cadre::post<<endl;

         cout<<"wages:"<<wage<<endl;

         }

    int main( )

     {Teacher_Cadre te_ca("Wang-li",50,'f',"prof.","president","135 Beijing Road,Shanghai","(021)61234567",1534.5);

      te_ca.show( );

      return 0;

    }

    10:

    #include <iostream>

    #include <cstring>

    using namespace std;

    class Teacher                                //教师类

     {public:

      Teacher(int,char [],char);               //声明构造函数

        void display();                          //声明输出函数

      private:

       int num;

       char name[20];

       char sex;

      };

    Teacher::Teacher(int n,char nam[],char s)    //定义构造函数

     {num=n;

      strcpy(name,nam);

      sex=s;

    }

    void Teacher::display()                      //定义输出函数

     {cout<<"num:"<<num<<endl;

      cout<<"name:"<<name<<endl;

      cout<<"sex:"<<sex<<endl;

    }

    class BirthDate                               //生日类

     {public:

        BirthDate(int,int,int);                   //声明构造函数

        void display();                           //声明输出函数

        void change(int,int,int);                 //声明修改函数

      private:

        int year;

        int month;

        int day;

    };

    BirthDate::BirthDate(int y,int m,int d)       //定义构造函数

     {year=y;

      month=m;

      day=d;

     }

    void BirthDate::display()                     //定义输出函数

     {cout<<"birthday:"<<month<<"/"<<day<<"/"<<year<<endl;}

    void BirthDate::change(int y,int m,int d)     //定义修改函数

     {year=y;

      month=m;

      day=d;

     }

    class Professor:public Teacher                         //教授类

     {public:

        Professor(int,char [],char,int,int,int,float);    //声明构造函数

        void display();                                   //声明输出函数

        void change(int,int,int);                         //声明修改函数

       private:

        float area;

        BirthDate birthday;                               //定义BirthDate类的对象作为数据成员

     };

    Professor::Professor(int n,char nam[20],char s,int y,int m,int d,float a):

     Teacher(n,nam,s),birthday(y,m,d),area(a){ }          //定义构造函数

    void Professor::display()                             //定义输出函数

    {Teacher::display();

     birthday.display();

     cout<<"area:"<<area<<endl;

    }

    void Professor::change(int y,int m,int d)             //定义修改函数

     {birthday.change(y,m,d);

     }

    int main()

    {Professor prof1(3012,"Zhang",'f',1949,10,1,125.4);   //定义Professor对象prof1

     cout<<endl<<"original data:"<<endl;

     prof1.display();                                     //调用prof1对象的display函数

     cout<<endl<<"new data:"<<endl;

     prof1.change(1950,6,1);                              //调用prof1对象的change函数

     prof1.display();                                     //调用prof1对象的display函数

     return 0;

    }

  • 相关阅读:
    ajax提交Form
    MySQL新建用户,授权,删除用户,修改密码总结
    php 数组操作类(整合 给意见)
    PHP基于数组的分页函数(核心函数array_slice())
    php生成table表格
    百度地图定位
    python-redis-订阅和发布
    宿主机-免密登录Docker容器
    docker-文件系统出错处理
    python-redis集合模式
  • 原文地址:https://www.cnblogs.com/suibian1/p/10987322.html
Copyright © 2011-2022 走看看