C++ 类设计:Traveler、Pager 和 BusinessTraveler 的构造函数、拷贝构造函数和赋值运算符
C++ 类设计:Traveler、Pager 和 BusinessTraveler
本文将创建一个 Traveler 类,它代表一个旅行者,包含一个姓名属性。同时还会创建一个 Pager 类,代表一个寻呼机,包含一个号码属性。最后,我们还将创建一个 BusinessTraveler 类,它继承自 Traveler 类,并包含一个 Pager 对象,代表一个商务旅行者。
代码实现
#include <iostream>
#include <string>
class Traveler {
public:
Traveler(std::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;
}
private:
std::string m_name;
};
class Pager {
public:
Pager(std::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;
}
private:
std::string m_number;
};
class BusinessTraveler : public Traveler {
public:
BusinessTraveler() : Traveler(""), m_pager("") { }
BusinessTraveler(std::string name, std::string pagerNumber) :
Traveler(name), m_pager(pagerNumber) { }
BusinessTraveler(const BusinessTraveler& other) :
Traveler(other), m_pager(other.m_pager) { }
BusinessTraveler& operator=(const BusinessTraveler& other) {
if (this != &other) {
Traveler::operator=(other);
m_pager = other.m_pager;
}
return *this;
}
private:
Pager m_pager;
};
int main() {
BusinessTraveler bt1; // 默认构造函数
BusinessTraveler bt2("Tom", "123456"); // 参数为string的构造函数
BusinessTraveler bt3 = bt2; // 拷贝构造函数
BusinessTraveler bt4;
bt4 = bt3; // 赋值运算符函数
return 0;
}
解释
1. Traveler 类
Traveler(std::string name):参数为 string 的构造函数,用于初始化旅行者的姓名。Traveler(const Traveler& other):拷贝构造函数,用于从另一个 Traveler 对象复制数据。Traveler& operator=(const Traveler& other):赋值运算符函数,用于将另一个 Traveler 对象的数据复制到当前对象。
2. Pager 类
Pager(std::string number):参数为 string 的构造函数,用于初始化寻呼机的号码。Pager(const Pager& other):拷贝构造函数,用于从另一个 Pager 对象复制数据。Pager& operator=(const Pager& other):赋值运算符函数,用于将另一个 Pager 对象的数据复制到当前对象。
3. BusinessTraveler 类
BusinessTraveler():默认构造函数,初始化一个空的 BusinessTraveler 对象。BusinessTraveler(std::string name, std::string pagerNumber):参数为 string 的构造函数,用于初始化商务旅行者的姓名和寻呼机号码。BusinessTraveler(const BusinessTraveler& other):拷贝构造函数,用于从另一个 BusinessTraveler 对象复制数据。BusinessTraveler& operator=(const BusinessTraveler& other):赋值运算符函数,用于将另一个 BusinessTraveler 对象的数据复制到当前对象。
总结
通过以上代码,我们创建了三个类,并为它们实现了必要的构造函数、拷贝构造函数和赋值运算符函数。这些类可以用于表示旅行者、寻呼机和商务旅行者,并能够使用拷贝构造函数和赋值运算符函数进行对象复制和赋值操作。
原文地址: https://www.cveoy.top/t/topic/oajS 著作权归作者所有。请勿转载和采集!