1
|
Scott Mermelstein · 技术社区 · 6 年前 |
1
4
除非您编写移动构造函数或移动赋值运算符,否则复制构造函数总是被定义的(在C++11之前可能被删除或未定义)。如果你不亲自声明,它是自动生成的。 现在,我对米斯拉的了解还不足以确定你提到的规则背后的原因,所以我来猜猜它是什么。 如果您有一个带有单个泛型参数的模板构造函数,那么您所做的可能不仅仅是一个简单的复制,而且您可能错误地认为所有的复制构造都将通过这个模板构造函数来完成。但是,如果用同一类的另一个对象或从该类派生的对象复制构造该类的对象(具有模板构造函数的对象),则将调用自动生成的复制构造函数 简而言之,通过提供一个复制构造函数,即使同时提供一个带有单个泛型参数的模板构造函数,也可以确保复制构造始终按预期工作。此外,还可以显式地向类的潜在用户显示,除了模板构造函数之外,该类还具有适当的复制构造函数。 |
Ankit Shah · 空指针问题 6 年前 |