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