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;

    }

  • 相关阅读:
    numpy 基础 —— np.linalg
    图像旋转后显示不完全
    opencv ---getRotationMatrix2D函数
    PS1--cannot be loaded because the execution of scripts is disabled on this system
    打开jnlp Faild to validate certificate, the application will not be executed.
    BATCH(BAT批处理命令语法)
    oracle vm virtualbox 如何让虚拟机可以上网
    merge 实现
    Windows batch,echo到文件不成功,只打印出ECHO is on.
    python2.7.6 , setuptools pip install, 报错:UnicodeDecodeError:'ascii' codec can't decode byte
  • 原文地址:https://www.cnblogs.com/suibian1/p/10987322.html
Copyright © 2011-2022 走看看