c ++简写operator-> operator()

ano*_*non -1 c++ shorthand

假设我有:

Foo foo;
Run Code Online (Sandbox Code Playgroud)

这是一个简写吗?

foo.operator->().operator()(1, 2);
Run Code Online (Sandbox Code Playgroud)

AnT*_*AnT 6

嗯,是.在较短的形式将如下

foo.operator->()(1, 2)
Run Code Online (Sandbox Code Playgroud)

至于消除operator ->部分...从你提供的信息到目前为止,这是不可能的,但如果它实现的方式我可以猜测它是实现的(从你的表达式判断),那么你无法消除它.

在C++ ->中,表达式中重载运算符的使用被解释为一系列重复的重载->调用,最终以内置->调用结束.这意味着在某些时候,重载->必须返回一个指针.您的重载->显然不会返回指针.因此,为了使用它,你别无选择,只能明确拼写出来operator ->().