Здравствуйте, 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 функции"
Достоинство квалификаторов — что компилятор проверит их сквозь десяток вызовов функций, во всей программе, даже в самом запутанном индусском коде-лапше.