C++ 继承与派生编程题

C++ 继承与派生—笔记

1. 编写一个程序,其中有一个汽车类Vehicle,它具有一个需要传递参数的构造函数,类中的数据成员:车轮个数wheels和车重weight为保护属性;小车类Car是它的私有派生类,其中包含载人数passager_load;卡车类Truck是Vehicle的私有派生类,其中包含载人数passager_load和载重量payload。每个类都有相关数据的输出方法。

#include
#include
using namespace std;

class Vehicle//声明汽车类
{
 protected:
  int wheel;//车轮
  double weight;//车重
 public:
  Vehicle(int w,double i){//构造函数
   wheel = w;
   weight = i;
  }
  void show(){//输出函数
   cout<<"车轮个数:"<  }
};

class Car:private Vehicle//声明小车类,私有继承汽车类
{
 private:
  int passager_load;//载人数
 public:
  Car(int w,double i,int p):Vehicle(w,i){//构造函数
   passager_load = p;
  }
  void display(){//输出函数
   cout<<"\n";
   Vehicle::show();
   cout<<"\t\t载人数:"<  }
};

class Truck:private Vehicle//声明卡车类,私有继承汽车类
{
 private:
  int passager_load;//载人数
  int payload;//载重量
 public:
  Truck(int w,double i,int p,int l):Vehicle(w,i){//构造函数
   passager_load = p;
   payload = l;
  }
  void display1(){//输出函数
   Vehicle::show();
   cout<<"\t\t载人数:"<  }
};

int main()
{
 Vehicle V(4,20);
 V.show();

 Car C(4,40.0,4);
 C.display();

 Truck T(6,80.0,2,100);
 T.display1();

 system("pause");
 return 0;
}

2. 假定居民的基本数据包括身份证号、姓名、性别和出生日期,而居民中的成年人又多两项数据:最高学历和职业,成年人中的党员又多一项数据:党员类别。现要求建立三个类,让成年人类继承居民类,而党员类继承成年人类,并要求在每个类中都提供有数据输入和输出的功能。

#include
#include
using namespace std;

class Residents
{
 private:
  int number;//身份证号
  string name;//姓名
  string sex;//性别  
  int birthday;//出生日期  
 public:
  void input(){
   cout<<"请按顺序(身份证号、姓名、性别、出生日期)输入居民信息:"<   cin>>number>>name>>sex>>birthday;   
  }
  void output() {  
   cout<<"\n\r输出居民信息:"<   cout<<" "<<number<<"   "<<name<<"   "<<sex<<"   "<<birthday<<endl;  
  }
};

class Adult:public Residents
{
 private:
  string Degree;//最高学历  
  string Occupation;//职业 
 public:
  void input1(){
   Residents::input();  
            cout<<"请输入最高学历和职业:"<<endl;  
            cin>>Degree>>Occupation;
  }
  void output1() { 
   cout<<"\n\r输出成年人信息:"<            Residents::output();  
            cout<<Degree<<"   "<<Occupation<<endl;  
        }  
};
class Party: public Adult
{  
 private:  
  string parties; //党员类别  
 public:  
        void input2() {  
            Adult::input1();  
            cout<<"请输入党员类别:"<<endl;  
            cin>>parties;  
        }  
        void output2(){  
            cout<<"\n\r输出党员信息:"<<endl;  
            Adult::output1();  
            cout<<parties<<endl;  
        }  
}; 

int main()
{
 //测试居民类
 Residents R;
 R.input();
 R.output();
 cout<<"\n"<

 //测试成人类
 Adult A;
 A.input1();
 A.output1();
 cout<<"\n"<

 // 测试党员类
 Party P;  
    P.input2();  
    P.output2();

 system("pause");
 return 0;
}

3. 数据成员 length,width;
成员函数 Rectangle( double l, double w ); //构造函数
double Area(); //返回矩形面积
double GetLength(); //返回数据成员length的值
double GetEidth(); //返回数据成员width的值
再定义Rectangle的派生类Rectangular,它包含:
数据成员 height
成员函数 Rectangular( double l, double w, double h ); //构造函数
double Volume(); //返回长方体体积
double GetHeight(); //返回数据成员height的值
在main函数中测试类体系,建立两个类的对象,显示它们的数据和面积、体积。


#include
#include
using namespace std;

class Rectangle//声明类
{
 public:
  double length;
  double width;
  Rectangle();//无参构造
  Rectangle(double l, double w); //构造函数
  double Area(); //返回矩形面积
  double GetLength(); //返回数据成员length的值
  double GetWidth(); //返回数据成员width的值
};

Rectangle::Rectangle(double l,double w)
{
 length = l;
 width = w;
}

double Rectangle::Area()
{
 return (length * width);
}

double Rectangle::GetLength()
{
 return length = 0.0;
}

double Rectangle::GetWidth()
{
 return width = 0.0;
}

class Rectangular:public Rectangle
{
 private:
  double height;
 public:
  Rectangular();//无参构造
  Rectangular( double l, double w, double h ); //构造函数
  double Volume(); //返回长方体体积
  double GetHeight(); //返回数据成员height的值
};

Rectangular::Rectangular(double l,double w,double h):Rectangle(l,w)
{
 height = h;
}

double Rectangular::Volume()
{
 return (length * width * height);
}

double Rectangular::GetHeight()
{
 return height = 0.0;
}

int main()
{
 Rectangle r(30,40);
 cout<<"面积为:"<

 Rectangular t(30,40,50);
 cout<<"体积为:"<

 system("pause");
 return 0;
}

**4. 编写一个师生数据输入和显示程序,学生数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名、输入和显示设计成一个类Person,并作为学生数据操作类Student和教师数据操作类Teacher的基类。
**


#include
#include
using namespace std;

class Person//声明类person
{
 public:  
  string name;//姓名
  int number;//编号

  Person();//无参构造
  Person(string n,int num){//构造函数
   name = n;
   number = num;   
  }
  void show(){//输出
   cout<<"姓名:"<  }
};

class Student:public Person//声明学生类
{
 private:
  int Class;//班号
  int score;//成绩
 public:
  Student();//无参构造
  Student(string n,int num,int C,int s):Person(n,num){//构造函数
   Class = C;
   score = s;
  }
  void display(){//输出函数
   show();
   cout<<"\t"<<"班号:"<  }
};

class Teacher:public Person//声明教师类
{
 private:
  string title;//职称
  string section;//部门
 public:
  Teacher();//无参构造
  Teacher(string n,int num,string t,string s):Person(n,num){//构造函数
   title = t;
   section = s;
  }
  void display(){//输出函数
   show();
   cout<<"\t"<<"职称:"<  }
};

int main()
{
 Student S("小李",123456,01,500);
 S.display();

 Teacher T("老张",987654,"班主任","数学");
 T.display();

 system("pause");
 return 0;
}

  • 5
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个问题需要编写一个程序,它具有一个汽车类(vehicle),它需要一个需要传递参数的构造函数,类数据成员由数据成员包括:车轮数量(wheels)和车重(weight),并设置保护成员;小车类(car)是vehicle的子类,它是私有派生类,其包括载客人数(pa)的成员变量。 ### 回答2: 要编写一个程序,我们需要先了解类和对象的概念。类是一组相似的对象的集合,它定义了对象的属性和方法。对象是具有特定状态和行为的实体,它是由类创建的。 我们需要创建一个汽车类,这个类具有车轮个数和车重这两个保护成员变量。保护成员只能在类及其子类使用,但是不能在类的实例访问。我们可以使用构造函数来传递车轮个数和车重这两个参数。 下一步,我们要创建一个小车类,这个类是汽车类的私有派生类。派生类可以继承父类的成员变量和方法。在小车类,我们需要添加一个成员变量——载客人数。这个成员变量应该是私有的,以确保访问的安全性。 下面是一个示例程序,它演示了如何创建汽车类和小车类,并使用它们创建对象: ``` #include<iostream> using namespace std; class vehicle{ protected: int wheels; //车轮个数 int weight; //车重 public: vehicle(int w, int we): wheels(w), weight(we){} //构造函数,传递车轮个数和车重 }; class car:private vehicle{ //小车类是汽车类的私有派生类 private: int pa; //载客人数 public: car(int w, int we, int p): vehicle(w, we), pa(p){} //构造函数,包含车轮个数、车重、载客人数 void display(){ //显示信息 cout << "车轮个数:" << wheels << endl; cout << "车重:" << weight << endl; cout << "载客人数:" << pa << endl; } }; int main(){ car mycar(4, 1000, 5); //创建小车对象 mycar.display(); //调用display函数,显示对象信息 return 0; } ``` 在这个示例程序,我们创建了一个vehicle类和一个car类。vehicle类具有两个保护成员变量——车轮个数和车重,并且它有一个带有两个参数的构造函数。car类是vehicle类的私有派生类,因此它可以访问vehicle类的成员变量。car类也有一个构造函数,它包含三个参数——车轮个数、车重和载客人数。display函数用于显示对象信息。 在main函数,我们创建了一个名为mycar的car对象,并将4、1000和5作为参数传递给构造函数。然后我们调用display函数来显示对象信息,这些信息包括车轮个数、车重和载客人数。输结果为: ``` 车轮个数:4 车重:1000 载客人数:5 ``` 这就是一个简单的程序,它演示了如何创建类和对象,并使用它们来实现一些常用的功能。当然,在实际应用,我们需要更加复杂的代码来满足不同的需求。 ### 回答3: 这是一道面向对象的编程题目,需要用到C++或其他面向对象的编程语言。 首先,我们需要定义一个车辆类Vehicle,其包含车轮个数和车重的数据成员,这两个数据成员都是保护成员,在类内外都可以被访问但是不能被直接修改。车辆类Vehicle还包含一个带参数的构造函数,用来初始化车轮个数和车重。 ```c++ class Vehicle { protected: int wheels; int weight; public: Vehicle(int w, int we): wheels(w), weight(we) {} }; ``` 然后,我们需要定义一个小车类Car作为Vehicle的私有派生类,其包含载客人数的数据成员pa,这个数据成员是私有的,只能在类内部访问。小车类Car还应该包含一个带参数的构造函数,用来初始化车轮个数、车重和载客人数。 ```c++ class Car: private Vehicle { private: int pa; public: Car(int w, int we, int p): Vehicle(w, we), pa(p) {} }; ``` 在这个例子,我们使用了“私有”的继承方式,这意味着不仅车辆类Vehicle的私有成员在小车类Car不可见,它的保护成员也都会成为私有成员,只能在小车类内部访问。 最后,在主程序,我们可以创建一个小车对象,调用其构造函数来初始化数据成员。我们可以打印小车对象的车轮个数、车重和载客人数,验证其状态是否正确。 ```c++ int main() { Car myCar(4, 1000, 5); std::cout << "Wheels: " << myCar.wheels << std::endl; std::cout << "Weight: " << myCar.weight << std::endl; std::cout << "Passengers: " << myCar.pa << std::endl; return 0; } ``` 在上面的代码,我们尝试访问小车对象的保护成员车轮个数和车重,发现无法编译通过,因为它们已经成为了私有成员。只有在小车类内部或者通过公有成员函数访问它们才是合法的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值