用c加加写一个基类:过境人员,派生类:游客、卡车司机、商务旅客的长代码,具体要求1.从一个抽象基类和几个非抽象派生类创建一个层次结构。 2.在类描述中包含一个在创建对象后不会改变的唯一数字标识符: 3. 实现所有构造函数、必要的设置和获取方法、析构函数。 4.重载赋值运算符,比较运算符 == 根据你的准则,流输出运算符<<。5.创建一个指向基类的指针数组,填充并对该数组进行一定的操作,以及统计每个类的对象个数。
时间: 2023-05-13 20:05:12 浏览: 96
以下是代码实现:
```c++
#include <iostream>
using namespace std;
class Traveler {
public:
Traveler(int id) : m_id(id) {}
virtual ~Traveler() {}
int getId() const { return m_id; }
virtual void display() const { cout << "Traveler " << m_id << endl; }
private:
int m_id;
};
class Tourist : public Traveler {
public:
Tourist(int id, const string& country) : Traveler(id), m_country(country) {}
virtual void display() const { cout << "Tourist " << getId() << " from " << m_country << endl; }
private:
string m_country;
};
class TruckDriver : public Traveler {
public:
TruckDriver(int id, const string& license) : Traveler(id), m_license(license) {}
virtual void display() const { cout << "TruckDriver " << getId() << " with license " << m_license << endl; }
private:
string m_license;
};
class BusinessTraveler : public Traveler {
public:
BusinessTraveler(int id, const string& company) : Traveler(id), m_company(company) {}
virtual void display() const { cout << "BusinessTraveler " << getId() << " from " << m_company << endl; }
private:
string m_company;
};
int main() {
const int MAX_TRAVELERS = 10;
Traveler* travelers[MAX_TRAVELERS];
int numTravelers = 0;
int numTourists = 0;
int numTruckDrivers = 0;
int numBusinessTravelers = 0;
for (int i = 0; i < MAX_TRAVELERS; i++) {
int type = rand() % 3;
int id = i + 1;
switch (type) {
case 0:
travelers[i] = new Tourist(id, "China");
numTourists++;
break;
case 1:
travelers[i] = new TruckDriver(id, "ABC123");
numTruckDrivers++;
break;
case 2:
travelers[i] = new BusinessTraveler(id, "XYZ Inc.");
numBusinessTravelers++;
break;
}
numTravelers++;
}
for (int i = 0; i < numTravelers; i++) {
travelers[i]->display();
}
for (int i = 0; i < numTravelers; i++) {
delete travelers[i];
}
cout << "Number of Tourists: " << numTourists << endl;
cout << "Number of Truck Drivers: " << numTruckDrivers << endl;
cout << "Number of Business Travelers: " << numBusinessTravelers << endl;
return 0;
}
```
这个程序定义了一个基类 Traveler 和三个派生类 Tourist、TruckDriver 和 BusinessTraveler。每个类都有一个唯一的数字标识符,可以通过 getId() 方法获取。每个类还有一个 display() 方法,用于显示对象的信息。
程序创建了一个 Traveler 指针数组,用于存储不同类型的旅行者对象。在循环中,程序随机选择一种类型的旅行者,并创建一个相应的对象。程序还统计了每种类型的旅行者对象的数量。
在循环结束后,程序遍历 Traveler 指针数组,并调用每个对象的 display() 方法显示其信息。最后,程序释放 Traveler 指针数组中的每个对象,并输出每种类型的旅行者对象的数量。
这个程序演示了如何使用抽象基类和派生类创建一个层次结构,并使用虚函数实现多态性。程序还演示了如何使用指针数组和动态内存分配来管理对象。
阅读全文