首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何重载std :: swap()

在C++中,std::swap()是一个用于交换两个对象的函数。如果要重载std::swap()以适应自定义类型,可以通过提供一个特化的std::swap()版本来实现。以下是如何重载std::swap()的步骤:

  1. 在自定义类型的定义中,添加一个友元函数swap()
  2. swap()函数中,交换两个自定义类型对象的成员变量。
  3. 在主代码中,调用std::swap()来交换自定义类型对象。

下面是一个简单的示例:

代码语言:cpp
复制
#include<iostream>
#include<algorithm>

class MyClass {
public:
    MyClass(int a, int b) : a_(a), b_(b) {}

    // 友元函数声明
    friend void swap(MyClass& lhs, MyClass& rhs);

    // 其他成员函数和变量...

private:
    int a_;
    int b_;
};

// 在类定义之外定义swap()函数
void swap(MyClass& lhs, MyClass& rhs) {
    std::swap(lhs.a_, rhs.a_);
    std::swap(lhs.b_, rhs.b_);
}

int main() {
    MyClass obj1(1, 2);
    MyClass obj2(3, 4);

    // 使用std::swap()交换对象
    std::swap(obj1, obj2);

    std::cout << "obj1: ("<< obj1.a_ << ", "<< obj1.b_ << ")"<< std::endl;
    std::cout << "obj2: ("<< obj2.a_ << ", "<< obj2.b_ << ")"<< std::endl;

    return 0;
}

输出:

代码语言:txt
复制
obj1: (3, 4)
obj2: (1, 2)

这个示例中,我们重载了std::swap()以适应自定义类型MyClass。在main()函数中,我们使用std::swap()交换了两个MyClass对象的值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券