在C++中,std::swap()
是一个用于交换两个对象的函数。如果要重载std::swap()
以适应自定义类型,可以通过提供一个特化的std::swap()
版本来实现。以下是如何重载std::swap()
的步骤:
swap()
。swap()
函数中,交换两个自定义类型对象的成员变量。std::swap()
来交换自定义类型对象。下面是一个简单的示例:
#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;
}
输出:
obj1: (3, 4)
obj2: (1, 2)
这个示例中,我们重载了std::swap()
以适应自定义类型MyClass
。在main()
函数中,我们使用std::swap()
交换了两个MyClass
对象的值。
领取专属 10元无门槛券
手把手带您无忧上云