Re[5]: DEEP_CONST
От: _banned_dobrokot livejournal.com/users/banned_dobrokot/
Дата: 11.01.06 08:20
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, _Winnie, Вы писали:


_W>>const означает, что мы не можем менять ноду.

_W>>DEEP_CONST означает ноду и всех её потомков.


E>Да, есть. Если метод get_right() является const, то и возвращать он должен const TreeNode *.


Обрати внимание, класс называется Tree
Node
а не Tree.
а константность ноды не должна обозначать константность всего дерева.
Если бы класс назывался Tree, тогда бы да, get_right дожен сохранять константность подобъектов. Но поскольку это Node, а не Tree, то что справа и слева — не подобъекты.

> А если мне нужен дочерний узел для изменения, но при этом я владею только константным указателем на родителя (уже странно, не находишь?), то не >лучше ли сделать отдельные методы: get_writeable_right() и get_writeable_left()?


Ну и про модификатор const тоже можно сказать, что он не нужен, и что "просто не вызывайте функцию set_value" как и "не вызывайте *writable функции"
Достоинство квалификаторов — что компилятор проверит их сквозь десяток вызовов функций, во всей программе, даже в самом запутанном индусском коде-лапше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.