struct bar; struct foo { operator bar*(); }; class Foo { Foo operator+(const Foo& rhs) const; const Foo& operator==(Foo& me); bool operator>(const Foo& rhs) const; InStream& operator<<(InStream& in); } const Foo& Foo::operator==(Foo& me) { } Foo Foo::operator+(const Foo& rhs) const { } bool Foo::operator>(const Foo& rhs) const { } class Example { char m_array[256]; operator Foo::Bar(); operator Foo::Bar*(); operator Foo::Bar&(); int operator()(int index) { i = ~~3; return index + 1; } int operator[](int index) { return m_array[index & 0xff]; } }