C++ 类继承与成员对象拷贝:Traveler、Pager 和 BusinessTraveler 示例

本示例演示了如何在 C++ 中创建 TravelerPagerBusinessTraveler 类,并使用继承和成员对象拷贝来实现类的功能。

代码实现

#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;
}

代码解析

  1. Traveler 类:

    • 拥有 m_name 成员变量,存储旅行者的姓名。
    • 包含构造函数、拷贝构造函数和赋值运算符函数,用于初始化、拷贝和赋值对象。
  2. Pager 类:

    • 拥有 m_number 成员变量,存储寻呼机的号码。
    • 包含构造函数、拷贝构造函数和赋值运算符函数,用于初始化、拷贝和赋值对象。
  3. BusinessTraveler 类:

    • 继承自 Traveler 类,拥有 m_pager 成员变量,存储寻呼机对象。
    • 包含构造函数、拷贝构造函数和赋值运算符函数,确保 TravelerPager 对象得到正确拷贝和赋值。
    • 提供 travel 函数,用于返回旅行者和寻呼机的信息。

示例用法

  • main 函数中,创建了三个 BusinessTraveler 对象:
    • bt1 使用带参数的构造函数初始化。
    • bt2 使用 bt1 的拷贝构造函数初始化。
    • bt3 使用默认构造函数初始化,然后使用 bt2 的赋值运算符赋值。
  • 最后,调用每个对象的 travel 函数,输出旅行者和寻呼机信息。

总结

本示例演示了如何使用 C++ 类继承和成员对象拷贝来实现复杂对象的功能。通过继承,BusinessTraveler 类可以复用 Traveler 类的方法和属性,同时添加自己的成员变量和方法。通过拷贝构造函数和赋值运算符函数,确保对象在拷贝和赋值时,成员对象也能得到正确的处理。

C++ 类继承与成员对象拷贝:Traveler、Pager 和 BusinessTraveler 示例

原文地址: https://www.cveoy.top/t/topic/oajW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录