Найти в Дзене
#convert_to

Ничто на Земле не проходит бесследно

Ничто на Земле не проходит бесследно На этой неделе меня догнало ключевое слово const. Многие авторы статей по с++ пишут, что все, что вам не нужно в коде, можно и даже нужно делать константным. Но на практике получается цирк с конями. Допустим, у меня есть контейнер, который наследуется от класса дерева. Здорово, красиво и приятно. Но надо переписать конструктор этого контейнера для длинного списка, потому что кто-то поленился написать итераторы для дерева, а без инкремента и декремента итератора для перебора листа по элементам сделать такой конструктор невозможно. Дерево полностью публичное, рубаха-парень и ни одного метода в себе не скрывает, а вот в упомянутый конструктор контейнера должен подаваться его константный экземпляр. И если со списком, где ничего не наследуется, разницы между константным и обычным экземпляром для конструктора нет, то во множестве разразился скандал. А как и в любом скандале, невнимательный партнер (т.е. я) сделала все, чтобы программа успокоилась и зарабо

Ничто на Земле не проходит бесследно

На этой неделе меня догнало ключевое слово const. Многие авторы статей по с++ пишут, что все, что вам не нужно в коде, можно и даже нужно делать константным. Но на практике получается цирк с конями.

Допустим, у меня есть контейнер, который наследуется от класса дерева. Здорово, красиво и приятно. Но надо переписать конструктор этого контейнера для длинного списка, потому что кто-то поленился написать итераторы для дерева, а без инкремента и декремента итератора для перебора листа по элементам сделать такой конструктор невозможно. Дерево полностью публичное, рубаха-парень и ни одного метода в себе не скрывает, а вот в упомянутый конструктор контейнера должен подаваться его константный экземпляр. И если со списком, где ничего не наследуется, разницы между константным и обычным экземпляром для конструктора нет, то во множестве разразился скандал.

А как и в любом скандале, невнимательный партнер (т.е. я) сделала все, чтобы программа успокоилась и заработала, но не решив проблему, а присобачив ключевое слово const во все функции, которые требовались для работы конструктора. И вот этот момент с для меня выглядит нелогично. Понимаю, что пользователь, который в теории будет работать с моим кодом, сломает даже то, что выглядит железобетонным. Но я то мерю по себе и ничего ломать не собираюсь. Так складывается впечатление, что компилятор заставляет программиста обещать ему защиту и стабильность, когда вокруг все ломается и плывет. И да, эта защита тоже еще ничего не значит.

#cpp #школа_21