Здравствуйте, c-smile, Вы писали:
CS>Я ж про это и говорю.
CS>CS>const char[] - immutable.
CS> char[] - mutable.
CS>
immutable — это характиристика типа. const же всего лишь предохраняет от модификации переменной.
CS>В C# и Java проблема (проблема ли?) — нет понятия deep immutable:
CS>CS>int foo(in MyClass cls)
CS>
CS>in защищает от изменения переменную cls в вызывающей процедуре
CS>но сам объект передаваемый — конем гуляй по нему.
Объект или передается по значению и тогда хоть обмодифицируйся. Или по ссылке. При этом возмжность модификации объекта зависит от того ползволяет ли он себя модифицировать.
Например, попроубуй изменить в C# строку или значение типа DateTimr.
CS>const MyClass& cls в C++ означает что для cls объекта в классе
CS>MyClass подавлены все изменяющие методы.
Нет. cls означет, что ссылка недопускает модфикации объекта. В то же время всегда можно создать новую ссылку или указатель и модифицировать через него тот же объект. Модифицировать же immutable-объект невозможно.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>