holyya.com
2025-09-04 11:31:15 Thursday
登录
文章检索 我的文章 写文章
C++交换两个类对象
2023-07-12 00:07:39 深夜i     --     --
C++ 交换 类对象

在C++中,我们经常需要进行两个对象的交换操作。而对于类对象而言,交换操作也是常见的需求。本文将介绍如何在C++中交换两个类对象。

在C++中,我们可以通过重载运算符来实现类对象的交换。具体来说,我们可以重载等号运算符和拷贝构造函数。以一个名为“Person”的类为例,代码如下:


class Person {

public:

  string name;

  int age;

  // 拷贝构造函数

  Person(const Person &other)

    this->name = other.name;

    this->age = other.age;

  

  // 重载等号运算符

  Person& operator=(Person other) {

    swap(*this, other);

    return *this;

  }

};

// 交换函数

void swap(Person &a, Person &b) {

  using std::swap;

  swap(a.name, b.name);

  swap(a.age, b.age);

}

上面的代码中,我们定义了一个名为“Person”的类,在该类中包含了两个属性:姓名和年龄。我们还定义了一个拷贝构造函数和一个交换函数。

拷贝构造函数用于初始化新对象,其参数为另一个同类对象。在函数体中,我们将另一个对象的姓名和年龄赋值给当前对象的对应属性。

重载等号运算符的返回值为当前对象的引用,其参数为另一个同类对象。该函数体中,我们调用了交换函数,将两个对象的属性互相交换。

交换函数定义在类外部,其参数为两个同类对象的引用。在函数体中,我们使用了STL库中的swap()函数,将两个对象的对应属性互相交换。

通过以上代码,我们就可以实现两个类对象的交换操作。如下所示:


Person p1 = {"Tom", 20};

Person p2 = {"Jerry", 18};

cout << "交换前:" << endl;

cout << "p1的姓名为:" << p1.name << ", 年龄为:" << p1.age << endl;

cout << "p2的姓名为:" << p2.name << ", 年龄为:" << p2.age << endl;

swap(p1, p2);

cout << "交换后:" << endl;

cout << "p1的姓名为:" << p1.name << ", 年龄为:" << p1.age << endl;

cout << "p2的姓名为:" << p2.name << ", 年龄为:" << p2.age << endl;

以上代码中,我们先创建了两个Person对象p1和p2,分别初始化其姓名和年龄。然后我们输出了交换前的姓名和年龄。接着调用了swap()函数进行交换,再次输出了交换后的姓名和年龄。

通过以上操作,我们就成功实现了C++中交换两个类对象的操作。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复