누구나 Foo 클래스의 오버로드 된 연산자가 Foo * 유형의 포인터에서 호출되지 않는 이유를 설명해 주실 수 있습니까?C++ 오버로드 연산자 ->()을 호출하지 않습니까?
#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";
}
두 번째 문은 작동합니다. 거기에 과부하가 없습니다. 아래에서 답하는 것처럼 포인터가 아닌 인스턴스에 대해서만 연산자를 오버로드 할 수 있습니다. –