I have the following code:
class A
{
public:
A() {};
void operator[](int x)
{
}
};
int _tmain(int argc, _TCHAR* argv[])
{
A a;
a.operator[](0);
a[0];
}
Both calls work, but I want to know whether there is any difference. Is one more efficient than the other? Do other things happen(besides executing the code in the overloaded operator) in either case?
EDIT:
Is there a case why you would want to write a.operator instead of just []. What’s the point of overloading if you’re not using the short syntax?
The explicit
operator[](and any other explicit operator) is used in an inheritence heirarchy, where you are trying to calloperator[]on a base class. You can’t do that using the normal[], as it would result in a recursive function call. ie; you might use something like this: