Question:
Which arguments do you receive when you overload . and -> , and what do you do with the arguments? I know that for overloading [] you receive the index. How about . and -> ?
Answer:
First, the . operator cannot be overloaded. If it could be, there would be no way to access members of the objectdirectly.
Here are the rules for operator -> :
- Operator
->must be defined as a member of a class. - The operator takes a second argument but the type is unspecified.
- The return value must be a type for which operator
->is meaningful.
Here is an example:
struct X{ Y * operator ->() { return yPtr_; } struct Y { void foo (); } Y * pPtr;}X x; x->foo () ; // calls X::Y::fooThe operand to operator -> (in this case foo) is applied to its return value. If the return value is something for which -> does not make sense, that is an error.
Charlie has over a decade of experience in website administration and technology management. As the site admin, he oversees all technical aspects of running a high-traffic online platform, ensuring optimal performance, security, and user experience.























