void swap(int* x, int* y)
{
int temp = *x;
*x = *y;
*y = tmp;
}
然而,这个函数最大的问题就是它只能给 int 值用,这个世界上还有很多类型包括 double、float,这就是静态语言最糟糕的一个问题
习惯了静态强类型的语言,都忽视了这一点,原来想js那样函数参数不用类型声明的好处,是非常非常灵活。但是C++却很好的解决了这些问题。
关于这个,本文的螺帽和螺丝刀的比喻太精彩了。
后续也很精彩,耗子的文章真是精华中的精华
泛型实现:
void swap(void* x, void* y, size_t size)
{
char tmp[size];
memcpy(tmp, y, size);
memcpy(y, x, size);
memcpy(x, tmp, size);
}
即使这样,在提升复杂度的同时,我们发现还有问题,比如,我们想交换两个字符串数组,类型是:char*,那么,我的swap()函数的x和y参数是不是要用void**了?这样一来,接口就没法定义了。
后续不在笔记了,文章太精彩,笔记几乎是全部文章。