Dus*_*ser 0 c++ operator-overloading
任何人都可以解释为什么重载运算符 - >类Foo没有从类型Foo*的指针调用?
#include <iostream>
using namespace std;
class Foo {
public:
Foo * operator -> () {
cout << "calling Foo * operator -> ()\n";
return this;
}
int x;
};
void main() {
Foo f;
Foo * pF = &f;
pF->x; // Why is overloaded operator-> not being called here?
(pF->operator->())->x; // This works.
cout << "End test.\n";
}
Run Code Online (Sandbox Code Playgroud)
为什么重载operator->不在这里调用?
因为pF是指针,而不是Foo实例.你已经超载operator->了Foo,而不是Foo*.你可以operator->直接打电话给你f.
f->x;
Run Code Online (Sandbox Code Playgroud)
你可能不超载operator->的Foo*或任何其他指针类型.