c++ - 在 C++ 中重载 -> 运算符

标签 c++ operator-overloading

我看到了这段代码,但我无法理解它的作用:

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::sesprivate - 这就是为什么我称它为伪代码

通过这种重载,您可以围绕指针创建一个包装器 - 这种包装器通常称为智能指针

关于c++ - 在 C++ 中重载 -> 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2904304/

相关文章:

c++ - 运算符重载解决方案

c++ - 友元函数声明为成员函数

c++ - 嵌套模板 C++ STL 的重载流运算符

c++ - 打开对话框

c++ - 不允许最大化/显示 QML 中的应用程序

python - 在C++中有更准确的时间记录方式吗?

c++ - 逻辑运算符与按位运算符的区别是什么

c++ - 从类型中减去是什么意思?

c++ - 无法重载自定义 PriorityQueue 的提取运算符

C++ TerminateProcess 函数