
复制构造函数
文明单位自查报告-最短航线
2023年2月18日发(作者:快乐出游)shared_ptr的拷贝构造函数
假设shared_ptr的模板参数为T,它的⼀个构造函数为:
template
explicitshared_ptr(Y*ptr);
其中T可以等于Y,也可以不等于Y。
那么对于它的拷贝构造函数:
shared_ptr(constshared_ptr&r)noexcept;
和
template
shared_ptr(constshared_ptr&r)noexcept;
当T等于Y时就是
shared_ptr(constshared_ptr&r)noexcept;
当T不等于Y时就是
template
shared_ptr(constshared_ptr&r)noexcept;
那么我的疑问是,既然⽤指针构造时T可以等于Y,也可以不等于Y,那么
template
shared_ptr(constshared_ptr&r)noexcept;
也应该包含了这两种情况,为何会多此⼀举定义⼀个
shared_ptr(constshared_ptr&r)noexcept;
呢?
原来模板拷贝构造函数不属于构造函数,就算我们只定义了
template
shared_ptr(constshared_ptr&r)noexcept;
编译器也会默认合成⼀个
shared_ptr(constshared_ptr&r)noexcept;
所以不管定没定义模板拷贝构造函数,
shared_ptr(constshared_ptr&r)noexcept;
总是存在的。
👁️ 阅读量:0
© 版权声明:本文《复制构造函数》内容均为本站精心整理或网友自愿分享,如需转载请注明原文出处:https://www.zastudy.cn/wen/1685947162a78590.html。