質問するログイン新規登録

回答編集履歴

1

微修正

2016/03/20 09:28

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -1,9 +1,9 @@
1
1
  こんにちは。
2
2
 
3
3
  C++では渡された引数を変更しないことを強制できます。
4
- `void foo(string const& bar);`と宣言した関数fooは、文字列引数barを変更しませんと宣言しているので、もしも変更する可能性のあるコードがあったらコンパイラがエラーにします。(色々ややこしい話もありますが、割愛)信頼性の高いソフトウェアを書くために使うことが推奨されます。
4
+ `void foo(string const& bar);`と宣言した関数fooは、文字列引数barを変更しませんと宣言しているので、もしも変更する可能性のあるコードがfooの中にあったらコンパイラがエラーにします。(色々ややこしい話もありますが、割愛)信頼性の高いソフトウェアを書くために使うことが推奨されます。
5
5
 
6
- ソフトウェアの信頼性を高めるために効で有り難い仕組みなのですが、メソッド呼び出し連鎖の結果、思わぬところに変更不可のコンパイル・エラーがでることがあり、意外にその修正に苦労します。
6
+ constは有り難い仕組みなのですが、メソッド呼び出し連鎖の結果、思わぬところに変更不可のコンパイル・エラーがでることがあり、意外にその修正に苦労します。
7
7
  この経験上、処理系のサポートなくきちんと非破壊なメソッドを書くことはかなり難易度高そうです。
8
8
 
9
9
  Rubyについてはよく知らないので事実かどうかよく分かりませんが、「破壊的メソッド」でググると面白い主張をしているQiitaのページがトップにでてきました。[破壊的メソッド名には!をつけなければならない](http://qiita.com/tadsan/items/7baab2605a4d8ac1858e)