我在STL中读取了unique_ptr实现并且有一些问题。 unique_ptr::swap()
的代码如下:
void
swap(unique_ptr& __u)
{
using std::swap;
swap(_M_t, __u._M_t);
}
我对这个功能有两个问题:
unique_ptr::_M_t
是私人会员,为什么__u._M_t
可以访问?
为什么unique_ptr& __u
中未指定模板参数?这是由特定的unique_ptr的构造函数完成的吗?
感谢您的帮助!
答案 0 :(得分:3)
该功能是会员。允许访问任何实例的私有成员。
如果在类体中定义,则不需要模板参数。编译器假定模板已实例化的参数相同。如果您想引用不同的模板实例,则需要参数,例如,如果unique_ptr<int>
的代码由于某种原因需要引用unique_ptr<double>
,则需要显式。