回答編集履歴
1
微修正
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)
|