C++ 类继承与成员对象拷贝:Traveler、Pager 和 BusinessTraveler 示例
C++ 类继承与成员对象拷贝:Traveler、Pager 和 BusinessTraveler 示例
本示例演示了如何在 C++ 中创建 Traveler、Pager 和 BusinessTraveler 类,并使用继承和成员对象拷贝来实现类的功能。
代码实现
#include <iostream>
#include <string>
using namespace std;
class Traveler {
public:
Traveler(string name) : m_name(name) {}
Traveler(const Traveler& other) : m_name(other.m_name) {}
Traveler& operator=(const Traveler& other) {
if (this != &other) {
m_name = other.m_name;
}
return *this;
}
virtual ~Traveler() {}
protected:
string m_name;
};
class Pager {
public:
Pager(string number) : m_number(number) {}
Pager(const Pager& other) : m_number(other.m_number) {}
Pager& operator=(const Pager& other) {
if (this != &other) {
m_number = other.m_number;
}
return *this;
}
virtual ~Pager() {}
protected:
string m_number;
};
class BusinessTraveler : public Traveler {
public:
BusinessTraveler() : Traveler(''), m_pager('') {}
BusinessTraveler(string name, string number) : Traveler(name), m_pager(number) {}
BusinessTraveler(const BusinessTraveler& other) : Traveler(other.m_name), m_pager(other.m_pager) {}
BusinessTraveler& operator=(const BusinessTraveler& other) {
if (this != &other) {
m_name = other.m_name;
m_pager = other.m_pager;
}
return *this;
}
virtual ~BusinessTraveler() {}
string travel(string destination) {
return 'Traveler: ' + m_name + ', Pager: ' + m_pager.m_number + ', Destination: ' + destination;
}
protected:
Pager m_pager;
};
int main() {
BusinessTraveler bt1('John', '123456');
BusinessTraveler bt2 = bt1;
BusinessTraveler bt3;
bt3 = bt2;
cout << bt1.travel('New York') << endl;
cout << bt2.travel('Paris') << endl;
cout << bt3.travel('London') << endl;
return 0;
}
代码解析
-
Traveler类:- 拥有
m_name成员变量,存储旅行者的姓名。 - 包含构造函数、拷贝构造函数和赋值运算符函数,用于初始化、拷贝和赋值对象。
- 拥有
-
Pager类:- 拥有
m_number成员变量,存储寻呼机的号码。 - 包含构造函数、拷贝构造函数和赋值运算符函数,用于初始化、拷贝和赋值对象。
- 拥有
-
BusinessTraveler类:- 继承自
Traveler类,拥有m_pager成员变量,存储寻呼机对象。 - 包含构造函数、拷贝构造函数和赋值运算符函数,确保
Traveler和Pager对象得到正确拷贝和赋值。 - 提供
travel函数,用于返回旅行者和寻呼机的信息。
- 继承自
示例用法
- 在
main函数中,创建了三个BusinessTraveler对象:bt1使用带参数的构造函数初始化。bt2使用bt1的拷贝构造函数初始化。bt3使用默认构造函数初始化,然后使用bt2的赋值运算符赋值。
- 最后,调用每个对象的
travel函数,输出旅行者和寻呼机信息。
总结
本示例演示了如何使用 C++ 类继承和成员对象拷贝来实现复杂对象的功能。通过继承,BusinessTraveler 类可以复用 Traveler 类的方法和属性,同时添加自己的成员变量和方法。通过拷贝构造函数和赋值运算符函数,确保对象在拷贝和赋值时,成员对象也能得到正确的处理。
原文地址: https://www.cveoy.top/t/topic/oajW 著作权归作者所有。请勿转载和采集!