假设我有:
Foo foo;
Run Code Online (Sandbox Code Playgroud)
这是一个简写吗?
foo.operator->().operator()(1, 2);
Run Code Online (Sandbox Code Playgroud)
嗯,是.在较短的形式将如下
foo.operator->()(1, 2)
Run Code Online (Sandbox Code Playgroud)
至于消除operator ->部分...从你提供的信息到目前为止,这是不可能的,但如果它实现的方式我可以猜测它是实现的(从你的表达式判断),那么你无法消除它.
在C++ ->中,表达式中重载运算符的使用被解释为一系列重复的重载->调用,最终以内置->调用结束.这意味着在某些时候,重载->必须返回一个指针.您的重载->显然不会返回指针.因此,为了使用它,你别无选择,只能明确拼写出来operator ->().
| 归档时间: |
|
| 查看次数: |
1254 次 |
| 最近记录: |