重载成员访问运算符->,。*

问题描述 投票:122回答:5

我了解大多数运算符重载,但成员访问运算符->.*->*等除外

尤其是传递给这些运算符的函数,应该返回什么?

[运算符功能(例如operator->(...))如何知道所引用的成员?能知道吗它甚至需要知道吗?

最后,是否需要考虑任何常量注意事项?例如,当重载operator[]之类的东西时,通常将需要const和非const版本。成员访问运算符是否需要const和非const版本?

c++ operator-overloading c++-faq
5个回答
138
投票

->


37
投票

操作员->很特殊。


25
投票

您不能使成员访问.过载(即->的第二部分)。但是,您可以重载一元dereferencing


10
投票

->操作符不知道所指向的成员,它只是提供一个对象来执行实际的成员访问。


6
投票

当您重载operator->()(此处未传递任何参数)时,编译器的实际作用是递归调用->,直到它返回指向类型的实际指针为止。然后,它使用正确的成员/方法。

© www.soinside.com 2019 - 2024. All rights reserved.