以algorithm里的sort函数为例,
default (1)template <class RandomAccessIterator>
void sort (RandomAccessIterator first, RandomAccessIterator last);
custom (2)template <class RandomAccessIterator, class Compare>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
这是
http://www.cplusplus.com/reference/algorithm/sort/上的内容,sort有两种形式,第一种接受两个迭代器,然后对序列排序,第二种,接受两个迭代器和一个自定义的比较函数来告诉sort该怎么样进行排序。
你可以看到,两种形式的差别在与第二种形式多了一个参数,为了实现这种函数,
1.要么使用变参函数,写一个sort(iter,iter, ...)来将第三个参数作为变参
2.要么使用函数重载函数,写两个参数不同的sort函数
3.要么只写三个参数的形式,然后给第三个参数一个默认值。
这三种方法都可以实现函数名相同,参数不同的函数。你可以在标准库里看到许多重载的函数,使用相同的函数名表示我在做同一件事,而接受参数不同,可以用于不同的情况。相比于使用变参而言,第二种和第三种技术会更简单,更方便。
参考资料:http://www.cplusplus.com/reference/algorithm/sort/