#include<iostream>
using namespace std;
class Swap
{
public:
Swap(int a, int b);
~Swap();
void swap(int* x, int* y);
void swap(int& x, int& y);
void print(int a, int b);
};
Swap::Swap(int a, int b)
{
printf("a=%d\tb=%d\n", a, b);
}
void Swap::print(int a, int b)
{
//printf("a=%d\tb=%d\n", a, b);
}
Swap::~Swap()
{
printf("ok");
}
/*
void swap(int x, int y)不行
按值传递,把a,b拷贝一个,传进去
四种交换方式
传指针,拷贝地址传进去
///void Swap::swap(int* x, int* y);
宏定义函数
#define SWAP(x, y, t) ((t)=(x), (x)=(y), (y)=(t), printf("a=%d\tb=%d\n", (x), (y)))
模板函数
std::swap();
传引用(引用是别名)
///void Swap::swap(int& x, int& y);
*/
void Swap::swap(int* x, int* y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
//printf("a=%d\tb=%d\n", *x, *y);
}
void Swap::swap(int& x, int& y)
{
int temp;
temp = x;
x = y;
y = temp;
//printf("a=%d\tb=%d\n", x, y);
}
int main()
{
int a=1, b=10;
int temp;
Swap test(a,b);
test.print(a, b);
test.swap(&a, &b);
test.print(a, b);
test.swap(a, b);
test.print(a, b);
SWAP(a, b, temp);
std::swap(a, b);
test.print(a, b);
return 0;
}