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]; } }