2012.02.02
【C++】演算子のオーバーロードに悩む
C++で文字列処理関係がだいぶ億劫になってきた。
せっかくC++使っているんだからと文字列クラスを作ろうと思い立ちました。
Javaみたく足し算で文字列演算をしたい。
Mojiretsu m1, m2; m1 = m2 + "あいうえお";
MojiretsuクラスのメソッドにindexOfみたいな補佐メソッドがついたりすると
すごく便利なのでつりたいなと思ったわけです。
いわゆるstd::stringみたいな処理を作りたいと思っている。
演算子のオーバーローはわかってきたのだが
途中の計算結果はどこに保存するのかがわからない。
int型とかなら演算結果をそのままreturnしていれば問題はないわけだが
文字列だと文字列分の再確保をしないといけないのでそのまま返却ができない。
内部で文字列クラスを再度作成して返却はできるが
ローカル変数だとreturnで戻ったときに値が死んでしまうし
newで作った変数だと誰が開放するかでよくわからない状況になってしまう。
演算子のオーバーライドの戻り値は基本自分の参照体を返すらしい?(*this)
これが自分の中で問題になっている鍵なのかもしれない。
しかし、参照体は結局、ローカルに作ると有効範囲的に問題があるし
最初に渡すにしても作業用変数の渡す必要があったりで結局面倒になる。
ということでうまい使い方がわからんという結果となりました。
面倒ですけど、addとかのメソッドでやれないことはないので
そちらでやっていきましょう。
テンプレートライブラリは偉大ですね~。
C++プログラミング入門 グレゴリー サティア ダウグ ブラウン Gregory Satir オライリー・ジャパン 2001-11 |
関連記事