代码如下:
#include <iostream>
#include <utility>
using namespace std;
class A {
public:
A(int a):i(a) {}
int getI() { return i; }
private:
int i;
};
int main()
{
A a(15),b(51);
cout<<a.getI()<<endl;
cout<<b.getI()<<endl;
std::swap(a,b);
cout<<a.getI()<<endl;
cout<<b.getI()<<endl;
return 0;
}
输出结果:
15
51
51
15
i
是 private
的,我又没有为 swap
定义友元,为什么标准库中的 swap
函数能交换 i
?
因为默认的赋值运算符已经帮你做了,就你这个类而言,它的默认实现基本是下面这样的,
这部分内容在 C++ primer plus 都是有介绍的,你可以再复习下你的学习书籍。