Vasiliy Sokolov: Константный метод - очередной пример пословицы "хотели как лучше, получилось как всегда". Думаю для С++ это вообще девиз. Практической пользы нет никакой, зато существенно затрудняет проектирование ООП-программ, т.к. постоянно требуется контролировать тип модифицируемого объекта (должен быть также константным).
Vasiliy Sokolov: Константный метод - очередной пример пословицы "хотели как лучше, получилось как всегда". Думаю для С++ это вообще девиз. Практической пользы нет никакой, зато существенно затрудняет проектирование ООП-программ, т.к. постоянно требуется контролировать тип модифицируемого объекта (должен быть также константным).
))) У меня лежит старая книга Страуструпа, если в дом ворвутся грабители, я ей легко отобьюсь, она как кирпич весит )) Старик таких сложностей навставлял в язык..
Помню, меня давно гоняли на собеседовании по плюсам, задали вопрос и я на него не смог точно ответить. Принесли подобный талмуд, почитал, спрашиваю,- а вы сами это применяете?
Ребята такие смеются, все ок, на этот вопрос еще никто правильно не ответил, так как никто не использует.
Кстати, где-то лежит книга по плюсам начала 90-х, еще до принятия первого стандарта. Нормальная удобоваримая книжечка в бумажной обложке. А потом Остапа понесло ))
Пример Алексей написал. Константный метод не может менять члены своего класса. Казалось бы в чем проблема? Просто не используй модификатор const. Но тогда возникают трудности в наследовании (особенно от стандартной библиотеки): проектировщик определил виртуальный метод const, а в производном классе, методу требуется кое-что поменять в своих данных - и тут затычка из-за const. Без него переопределения метода не произойдет, а с ним производный метод не сможет менять данные своего же класса.
В чем главная ошибка введения такого модификатора для методов класса? В том что нарушается главный принцип наследования: специализации и уточнения. Базовый класс запрещает работать методу производного класса с его внутренними данными. А такого быть не должно.
Я и не отрицаю. Шарп действительно совершенный, великий и прекрасный язык.
Комбинатор:
Ничего const не затрудняет, не надо ля-ля
Хорошо, допустим с const всегда можно вывернутся. Но лучше кратко объясни на примере, что дает const? В чем его реальная польза? На примере, и желательно не из пальца высосанном.
Const - это одна из ярких метафор C++: сначала усердно расставляешь изощренные ловушки по всему коду, а потом сам же из своих ловушек выворачиваешься - в этом весь процесс программирования на С++.
В чем главная ошибка введения такого модификатора для методов класса? В том что нарушается главный принцип наследования: специализации и уточнения. Базовый класс запрещает работать методу производного класса с его внутренними данными. А такого быть не должно.
Может это какая-то часть, которая дается от создателей к простым юзерам. Как функция start в советнике и переменные Bid, Ask.
Когда все полностью сам делаешь, то нет смысла заморочиваться всякими const.
Dmitry Fedoseev: Великий. Но до совершенства ему очень далеко.
Шарп хорош не тем, что его делали какие-то там гении, а тем что он последний. До него на протяжении 30 лет пробовали убиваться граблями самых разных размеров и причудливых конфигураций. С++ для этого был замечательным полигоном. После того, как все переубивались, ребята из Microsoft просто спизд... переняли опробированные концепции и создали синтаксически чистый язык с нуля.
У MetaQuotes кстати тоже был не хилый шанс постепенно "развить" MQL5 в граблеподобного монстра а-ля C++. Но глубокие познания в С++ (где наверняка были пот, слезы и ненависть), помогли понять, что следовать советам форумным олдскул программерам С++ ни в коем случае нельзя. Поэтому сейчас имеем синтаксически чистый и более менее строготипизированный язык программирования. Даже удивительно, что удалось создать такую конфету, базируясь при этом на совершенно чудовищном наследии. Мастерство не пропьешь как говорится.
Константный метод - очередной пример пословицы "хотели как лучше, получилось как всегда". Думаю для С++ это вообще девиз. Практической пользы нет никакой, зато существенно затрудняет проектирование ООП-программ, т.к. постоянно требуется контролировать тип модифицируемого объекта (должен быть также константным).
Можно пример того, о чем Вы написали?
Константный метод - очередной пример пословицы "хотели как лучше, получилось как всегда". Думаю для С++ это вообще девиз. Практической пользы нет никакой, зато существенно затрудняет проектирование ООП-программ, т.к. постоянно требуется контролировать тип модифицируемого объекта (должен быть также константным).
))) У меня лежит старая книга Страуструпа, если в дом ворвутся грабители, я ей легко отобьюсь, она как кирпич весит )) Старик таких сложностей навставлял в язык..
Помню, меня давно гоняли на собеседовании по плюсам, задали вопрос и я на него не смог точно ответить. Принесли подобный талмуд, почитал, спрашиваю,- а вы сами это применяете?
Ребята такие смеются, все ок, на этот вопрос еще никто правильно не ответил, так как никто не использует.
Кстати, где-то лежит книга по плюсам начала 90-х, еще до принятия первого стандарта. Нормальная удобоваримая книжечка в бумажной обложке. А потом Остапа понесло ))
Можно пример того, о чем Вы написали?
Пример Алексей написал. Константный метод не может менять члены своего класса. Казалось бы в чем проблема? Просто не используй модификатор const. Но тогда возникают трудности в наследовании (особенно от стандартной библиотеки): проектировщик определил виртуальный метод const, а в производном классе, методу требуется кое-что поменять в своих данных - и тут затычка из-за const. Без него переопределения метода не произойдет, а с ним производный метод не сможет менять данные своего же класса.
В чем главная ошибка введения такого модификатора для методов класса? В том что нарушается главный принцип наследования: специализации и уточнения. Базовый класс запрещает работать методу производного класса с его внутренними данными. А такого быть не должно.
Шарпом за версту несет ))
Ничего const не затрудняет, не надо ля-ля
Шарпом за версту несет ))
Я и не отрицаю. Шарп действительно совершенный, великий и прекрасный язык.
Ничего const не затрудняет, не надо ля-ля
Хорошо, допустим с const всегда можно вывернутся. Но лучше кратко объясни на примере, что дает const? В чем его реальная польза? На примере, и желательно не из пальца высосанном.
...
В чем главная ошибка введения такого модификатора для методов класса? В том что нарушается главный принцип наследования: специализации и уточнения. Базовый класс запрещает работать методу производного класса с его внутренними данными. А такого быть не должно.
Может это какая-то часть, которая дается от создателей к простым юзерам. Как функция start в советнике и переменные Bid, Ask.
Когда все полностью сам делаешь, то нет смысла заморочиваться всякими const.
Я и не отрицаю. Шарп действительно совершенный, великий и прекрасный язык.
...
Великий. Но до совершенства ему очень далеко.