✅ 操作成功!

复制构造函数

发布时间:2023-06-05 作者:admin 来源:文学

复制构造函数

复制构造函数

文明单位自查报告-最短航线

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