【C++】 const だけでメシが3杯食えちゃうスレ
■ このスレッドは過去ログ倉庫に格納されています
0097デフォルトの名無しさん
NGNGmutable は、外側から見たクラスの挙動を変えずに、コードの性能を改善するための最終兵器…かな?
例えば、線形の検索が頻発するリストがあったとして、直前の検索結果を
次の検索の高速化のためのキーに使えそうなら、おもむろにメンバに
mutable int _index;
とかを追加して、次回の検索に役立てると。
普通この手の話は、アルゴリズム自体を改善しろよとか、
使えそうなキーがあるなら外部からも取得できるようにして
呼び出し側が指定できるようにしろよとか、そんな腐った設計の仕事に
関わりあいたくないとか言われてしまえば、そこでお終いになるわけだが、
あまり考えたくない諸般の事情…
・何らかの(政治的含む)事情により、他のコードに手を出すわけにいかない
・もう時間が残っておらず、大きな改修をくれている暇が無い
・このクラス単体の性能が上ることで、誰も不利益を被らない
なんかによって八方塞りなんだけど、なんとか目標の性能を達成したい時とかには、重宝したりしなかったりします。
あとの使い道は…参照カウンタ類とか。
これはデバッグビルド時、あまりリッチな開発環境を使えなかったり、プロファイラなんかが
役に立たない時に、やはり外側の挙動を変えずに、ナニが何回呼ばれて何秒使ってるとか
局所的なチェックを入れたい時に、役に立ったり立たなかったり。
const 参照しか返してないのに、明らかに非constメソッドに接触されていて、
どこが原因か追っかけ倒したら>>93が悪の華を咲かせてたりとか、そういう事態に対する
自衛手段になることもあったりなかったり。
自制して使えば、それなりに出番も持たせられる、そこそこ便利な機能だと思うよ。
C++のこういう泥臭くって現実主義的なところ、俺は好きです。
■ このスレッドは過去ログ倉庫に格納されています