Again, you're specifying the conversion/cast operator. Technically it is a function, but it's meant to be used as a cast-converter. That's what the operator keyword specifies.
Normally you'd get an error (string to const char* conversion incompatible), but that overload took care of it.
Why won't you try making your own, custom string class and try to run my code above? You're overloading a class type here. More specifically a 'return'-type from a cast.