可能是重复问题:
如何为我的类提供一个交换函数?
每次我以为我明白了,但总会看到一些让我困惑的东西。
如果你想为自己的类提供一个 swap
的实现,你该怎么做呢?
可能的选择列表如下:
定义一个在
std
命名空间内的函数(接受两个参数),该函数调用下面的 #3 函数
(有人说这是正确的;有些人说这是非法的)在类内部定义一个静态方法,接受两个参数进行交换
(对我来说比 #4 更有意义,但我不明白为什么没有人这样做),该方法根据需要调用任何基类的swap
方法在类内部定义一个实例方法,接受另一个参数进行交换, 该方法根据需要调用任何基类的
swap
方法在类内部定义一个实例方法,接受两个其他参数进行交换, 同上, 该方法根据需要调用任何基类的
swap
方法定义一个在你自己的命名空间中的函数(接受两个参数), 该函数调用 #3
其他内容
using std::swap; swap(a, b);
,但是没有人建议这种组合方式,这真的让我感到困惑。我真的不理解 #4,因为每个人似乎都在使用一个实例成员,而实际上操作是静态的。我无法确定我的理解是否错误,或者当我查找答案时看到的一堆答案是否正确。
什么是正确的方法?