首先一个简单的问题,如何实现交换两个整数的值? 想必每个有编程经验的人都能作答。
C语言用指针实现如下:
void swap(int * a, int * b){
int tmp = *a;
*a = *b;
*b = tmp;
}void swap(int & a, int & b){
int tmp = a;
a = b;
b = tmp;
}void swap(int & a, int & b){
a = a + b;
b = a - b;
a = a - b;
}void swap(int & a, int & b){
a = a ^ b;
b = a ^ b;
a = a ^ b;
}新问题的C语言实现如下:
void swap(void * a, void * b, int size){
char * tmp = malloc(size * sizeof(char));
memcpy(tmp, a, size * sizeof(char));
memcpy(a, b, size * sizeof(char));
memcpy(b, tmp, size * sizeof(char));
free(tmp);
}
新问题的C++函数模板实现如下:
template<class T>
void swap(T & a, T & b){
a = a + b;
b = a - b;
a = a - a;
}//swap.h template<class T> void swap(T & a, T & b); #include "swap.cpp"
//swap.cpp
template<class T>
void swap(T & a, T & b){
a = a + b;
b = a - b;
a = a - b;
}最好的方法是,将函数模板的定义直接放在头文件中,不要在.cpp文件中。
C和C++中泛型编程 - 适应不同类型参数的函数,布布扣,bubuko.com
原文地址:http://blog.csdn.net/seanwang_25/article/details/26283015