我在阅读另一个问题时,让我想到了一件事。标准通常在其描述中指定具有默认参数的函数。标准允许将这些函数写成重载吗?
例如,标准规定std::basic_string::copy
的声明如下:
size_type copy(Ch* p, size_type n, size_type pos = 0) const;
一个符合标准库规范的实现是否可以将其改为两个函数,像这样?
size_type copy(Ch* p, size_type n, size_type pos) const;
size_type copy(Ch* p, size_type n) const;
在这个例子中,第二个版本可以跳过第一个版本中必须要有的 if(pos > size()) { throw out_of_range(); }
测试。这是一种微小的优化,但你可以看出这个例子的重点。