为什么复制构造函数有多个参数?

Chu*_*dad 13 c++ copy-constructor

$ 12.8/2 - '类X的非模板构造函数是一个复制构造函数,如果它的第一个参数是类型X&,const X&,volatile X&或const volatile X&,并且没有其他参数或者所有其他参数都有默认值参数(8.3.6).106)'

到目前为止,我还没有遇到任何需要使用其他默认参数声明复制构造函数的情况的示例.

想知道任何实时使用这种带有多个参数的复制构造函数.

dir*_*tly 11

std::basic_string的确有一个:

basic_string(const basic_string& s, 
         size_type pos = 0, size_type n = npos)
Run Code Online (Sandbox Code Playgroud)


Eva*_*ran 10

BDE分配器 [PDF Link]使用了这个怪癖.例如,他们的数组分配器看起来像这样:

template <typename T>
class bde::Array {
public:
    Array(bde::Allocator *allocator = 0);
    Array(const Array &rhs, bde::Allocator *allocator = 0);
};
Run Code Online (Sandbox Code Playgroud)