我看到了这段代码,但我无法理解它的作用:
inline S* O::operator->() const
{
return ses; //ses is a private member of Type S*
}
那么如果我使用 ->
会发生什么?
最佳答案
现在如果你有
O object;
object->whatever()
首先会调用重载的operator->
,返回存储在对象中的ses
,然后是operator->
(built-在 S*
的情况下)将为返回的指针再次调用。
所以
object->whatever();
相当于伪代码:
object.ses->whatever();
后者当然是不可能的,因为 O::ses
是 private
- 这就是为什么我称它为伪代码。
通过这种重载,您可以围绕指针创建一个包装器 - 这种包装器通常称为智能指针。
关于c++ - 在 C++ 中重载 -> 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2904304/