在表达式 *p5 = 10;
中,并没有直接涉及到 std::unique_ptr
类模板的赋值运算符重载。这里实际上是发生了两个步骤:
-
解引用操作:
*p5
使用的是std::unique_ptr
的解引用运算符重载(operator*
)。这个运算符允许我们访问unique_ptr
所拥有的对象。在这个例子中,*p5
给我们提供了对其所拥有的动态分配的int
对象的引用。 -
赋值操作:
= 10
部分是对解引用得到的int
对象进行赋值。这里使用的是int
类型的赋值运算符,而不是std::unique_ptr
的赋值运算符。这个操作将解引用得到的int
的值设置为 10。
因此,虽然整个表达式涉及到了 std::unique_ptr
,但赋值运算符的使用是针对 unique_ptr
所管理的 int
对象,而不是 unique_ptr
自身。std::unique_ptr
提供的是解引用的能力,而赋值操作实际上是作用于 int
类型的对象上。