2012.02.02

【C++】演算子のオーバーロードに悩む

C++で文字列処理関係がだいぶ億劫になってきた。
せっかくC++使っているんだからと文字列クラスを作ろうと思い立ちました。

仕様

Javaみたく足し算で文字列演算をしたい。

Mojiretsu m1, m2;
m1 = m2 + "あいうえお";

MojiretsuクラスのメソッドにindexOfみたいな補佐メソッドがついたりすると
すごく便利なのでつりたいなと思ったわけです。

いわゆるstd::stringみたいな処理を作りたいと思っている。

途中の計算結果の保存先に悩む

演算子のオーバーローはわかってきたのだが
途中の計算結果はどこに保存するのかがわからない。

int型とかなら演算結果をそのままreturnしていれば問題はないわけだが
文字列だと文字列分の再確保をしないといけないのでそのまま返却ができない。

内部で文字列クラスを再度作成して返却はできるが
ローカル変数だとreturnで戻ったときに値が死んでしまうし
newで作った変数だと誰が開放するかでよくわからない状況になってしまう。

戻り値は参照型を返すぽい

演算子のオーバーライドの戻り値は基本自分の参照体を返すらしい?(*this)

これが自分の中で問題になっている鍵なのかもしれない。

しかし、参照体は結局、ローカルに作ると有効範囲的に問題があるし
最初に渡すにしても作業用変数の渡す必要があったりで結局面倒になる。


ということでうまい使い方がわからんという結果となりました。

面倒ですけど、addとかのメソッドでやれないことはないので
そちらでやっていきましょう。

テンプレートライブラリは偉大ですね~。

C++プログラミング入門 C++プログラミング入門
グレゴリー サティア ダウグ ブラウン Gregory Satir

オライリー・ジャパン 2001-11
売り上げランキング : 24003

Amazonで詳しく見る by G-Tools

Pocket

ニャッキ格闘列伝 > プログラム >

前の記事:
次の記事:

コメントリスト

コメントなし

コメント



*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

こんなタグが使えるみたいよ:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>