Что означает модификатор const после объявления метода - страница 3

 
Не редко намеренно использую и такие конструкции:
const TYPE1 Method( const TYPE2 Input ) const;
А если не просто не меняю внутренних данных объекта, но еще и не обращаюсь к ним, то сразу прописываю метод, как static. Для меня использование const и static очень сильно повышает читабельность/понимание собственного кода. И позволяет часто отловить баг или изъяны в собственной архитектуре на ранних этапах ее реализации.

Все пишу только для себя. И казалось бы, ну не буду все равно менять какие-то данные, которые не следовало бы. Но желание защититься от собственной дурости заставляет клепать ООП-архитектуру так, чтобы было доступно к измению только то, что должно быть доступно. Остальное - нет. И тут const + виды наследования очень выручают. Рекомендую.
 
Dmitry Fedoseev:

Может это какая-то часть, которая дается от создателей к простым юзерам. Как функция start в советнике и переменные Bid, Ask. Когда все полностью сам делаешь, то нет смысла заморочиваться всякими const.

К сожалению ради совместимости приходится тащить весь этот балласт. Зато небольшие коды из Си и С++ очень быстро портируются в MQL (проверенно многократно).
 

Заметил одну интересную тенденцию -- про чудовищность плюсов говорят в подавляющем большинстве случаев те, кто в нем ну совершенно не разбирается. В основном шарперы что характерно.

Да, конечно, шарп лучше и удобнее когда надо наваять что-то прямое как палка )

 
zaskok3:
Не редко намеренно использую и такие конструкции:
А если не просто не меняю внутренних данных объекта, но еще и не обращаюсь к ним, то сразу прописываю метод, как static. Для меня использование const и static очень сильно повышает читабельность/понимание собственного кода. И позволяет часто отловить баг или изъяны в собственной архитектуре на ранних этапах ее реализации.
...

Ох ребята. Милует вас MetaQuotes. Одна из первоочередных заповедей программиста: ни когда не используй static. Вторая заповедь: если хочешь использовать static смотри пункт первый:)

Если static-данные меняет один поток, пока другой их читает - начинаются такие чудеса мультипоточного программирования вылезать, что потом как страшный сон этот статик вспоминаешь.

Но хорошо юзверям в MQL: ни какой многопоточности, а значит, ни какой метод не изменит статик, прежде чем пользовательский поток не завершит его чтение.   

 
Vasiliy Sokolov:

Одна из первоочередных заповедей программиста: ни когда не используй static. Вторая заповедь: если хочешь использовать static смотри пункт первый:)

Если static-данные меняет один поток, пока другой их читает - начинаются такие чудеса мультипоточного программирования вылезать, что потом как страшный сон этот статик вспоминаешь.

Лишний раз убедился что дискуссии не выйдет )
 
Комбинатор:

Заметил одну интересную тенденцию -- про чудовищность плюсов говорят в подавляющем большинстве случаев те, кто в нем ну совершенно не разбирается. В основном шарперы что характерно.

Да, конечно, шарп лучше и удобнее когда надо наваять что-то прямое как палка )

Классическая маза си плюсников: "Вы не любите кошек? Вы просто не умеет их готовить".

Не, я не отрицаю, С++ как ни один язык можно оттюнинговать под стандарты разработки. Правда пока придешь к этим стандартам, так об грабли поубиваешься, что либо действительно станешь крутым программистом в С++, либо плюнешь и пойдешь на 1С ERP-шки варганить.

 
Vasiliy Sokolov:

Классическая маза си плюсников: "Вы не любите кошек? Вы просто не умеет их готовить".

Ну просто так и есть )

Я ничего не имею против шарпа, ботов вот щас на нем пишу, удобненько, быстро.

Просто не люблю когда обливают грязью то, что этого не заслужило и более того то, что никто не заставляет в обязательном порядке пользовать.

Это касается и конста, и плюсов в целом.

 
Комбинатор:

Ну просто так и есть )

Я ничего не имею против шарпа, ботов вот щас на нем пишу, удобненько, быстро.

Просто не люблю когда обливают грязью то, что этого не заслужило и более того то, что никто не заставляет в обязательном порядке пользовать.

Это касается и конста, и плюсов в целом.

Ладно мир. Просто обсуждение С++ всегда скатывается в холивар. 

З.Ы. Если кто объяснит мне в чем тема с использованием const - буду признателен. Реально не понимаю.

 
Vasiliy Sokolov:

Пример Алексей написал. Константный метод не может менять члены своего класса. 

void bar(X& obj) const 
    {
        obj._x = 42; // OK! obj передается по ссылке и не имеет модификатора const
        _x = 42; // ERROR!
    }

Может я чего не понял, но... вот. Алексей написал, что константный метод bar меняет объект своего класса obj. В чем проблема? 

Да, obj передается по ссылке, но метод-то от этого константным быть не перестал... 

 
Alexey Kozitsyn:

Может я чего не понял, но... вот. Алексей написал, что константный метод bar меняет объект своего класса obj. В чем проблема? 

Да, obj передается по ссылке, но метод-то от этого константным быть не перестал... 

Не своего, а совершенно постороннего, только тип такой же.