Point 3 is not explicitly covered, but I assume good will
As for the operators - simple. Yes its basically defining a cast.
class one
{
public:
operator unsigned int() { return 1; }
operator LPCSTR() { return "1"; }
operator char() { int i =3; return "aaa1bbb"[i]; }
};
since these are cast operator, the return type is the name. Very useful for wrapper classes or things like VARIANT classes. A funny usage of string pointers you can see in the char operator. Yes, that works.
You can use the cast operators for ANY type, builtin or your own. Have a look at the VARIANT class that comes with VC. It defines lots of operators like that.