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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值