2002-11-19 97141

長い識別子

メンバ関数のポインタを二つくらい引数にしてコンストラクタを呼び出すと、なぜだか呼び出されたときに引数が壊れているという現象が起きました。なんでだろう?

識別子が長いのが原因かなと思って、試しに関数ポインタをtypedefしてそちらを使うようにしたらちゃんと動作する用になったので良かったのですが、いまいちいまだに原因不明なのが気になるところです。

STLportのbasic_string::reserve()

先日書いたbasic_string::reserve()の実装はどうやらわざとそうなっているようです。つまり、reserve(0);とやって呼び出すと、不必要に確保しているメモリを開放する効果があるということですね。気持ちはわかるけど微妙に使いにくいですね。そもそもC++でも、JavaのようにImmutableなStringとMutableなStringBufferという具合に別れていた方が扱いやすいと思うんですけどね。