用c加加写一个基类:过境人员,派生类:游客、卡车司机、商务旅客的长代码,要求1.从一个抽象基类和几个非抽象派生类创建一个层次结构。 2.在类描述中包含一个在创建对象后不会改变的唯一数字标识符3. 实现所有构造函数、必要的设置和获取方法、析构函数。 4.进行运算符重载5.创建一个指向基类的指针数组,填充并对该数组进行一定的操作,以及统计每个类的对象个数。 2. 创造基类和派生类的字段的其余组成,以及对数组执行的操作
时间: 2023-05-11 11:07:28 浏览: 157
以下是代码示例:
```c++
#include <iostream>
using namespace std;
class TransitPerson {
protected:
int id;
public:
TransitPerson(int id) : id(id) {}
virtual void getInfo() = 0;
virtual ~TransitPerson() {}
};
class Tourist : public TransitPerson {
private:
string name;
public:
Tourist(int id, string name) : TransitPerson(id), name(name) {}
void getInfo() {
cout << "Tourist " << name << " with ID " << id << endl;
}
~Tourist() {}
};
class TruckDriver : public TransitPerson {
private:
string licensePlate;
public:
TruckDriver(int id, string licensePlate) : TransitPerson(id), licensePlate(licensePlate) {}
void getInfo() {
cout << "Truck driver with license plate " << licensePlate << " and ID " << id << endl;
}
~TruckDriver() {}
};
class BusinessTraveler : public TransitPerson {
private:
string company;
public:
BusinessTraveler(int id, string company) : TransitPerson(id), company(company) {}
void getInfo() {
cout << "Business traveler from " << company << " with ID " << id << endl;
}
~BusinessTraveler() {}
};
int main() {
TransitPerson* transitPeople[3];
transitPeople[0] = new Tourist(1, "John");
transitPeople[1] = new TruckDriver(2, "ABC123");
transitPeople[2] = new BusinessTraveler(3, "XYZ Corp");
for (int i = 0; i < 3; i++) {
transitPeople[i]->getInfo();
}
for (int i = 0; i < 3; i++) {
delete transitPeople[i];
}
return 0;
}
```
这个代码示例创建了一个抽象基类 TransitPerson 和三个非抽象派生类 Tourist、TruckDriver 和 BusinessTraveler。每个类都有一个唯一的数字标识符 id,并且实现了 getInfo() 方法来输出相关信息。在 main() 函数中,创建了一个指向基类的指针数组,填充并对该数组进行一定的操作,以及统计每个类的对象个数。运算符重载和其他字段的组成可以根据具体需求进行添加。
阅读全文