自分でつくったクラスにoperator++を実装したからといって、安易にインクリメントしてはいけない。
配列でないポインタにoperator++を用いるとバグの元になる。operator++を自分で作ったがために、一見ポインタに見えないシンボルを++でインクリメントすることに違和感を感じにくいからである。
特に、誰も書かないとは思うが、次のようなコードを書くことは厳禁である。
// bad code like this never works!!!!! class myclass{ public: ... mynode& operator++(){ return *it_++; } ; private: vector<mynode>::iterator it_; vector<mynode> nodes_; } myclass* mcp = new myclass(); while( mcp->begin(); mcp->hasNext(); ++mcp){ const mynode& x = mcp->current(); x.work(); } delete mcp; //当然、deleteも忘れてないぜ?!