Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Подробнее о спецификации классов..


Автор: hoz 25.8.2013, 12:49
 Изучаю вопрос, касательно, спецификации классов памяти.
По поводу типа auto, всё понятно. Типичные переменные блоков кода, которые живут только в этих блоках. Это так, в кратце.
 А вот с register не совсем понятно. Получается, что переменные данного типа хранятся в памяти самого процессора, а не оперативной памяти, так? И это обеспечивает более быструю скорость выполнения расчёта?
 Для каких ещё типов переменных используется данный тип класса, кроме как счётчики? Как решать, где его применять? Может я рано об этот задумываюсь, но этот вопросы всплыл сразу, при чтении учебника. 
Сказано, что иногда не хватает количества регистров (я так понял процессора.. Верно?), и тогда компилятор может проигнорировать объявление register. Нынче это актуально?

Автор: disputant 25.8.2013, 14:12
Вообще-то специалисты (см., например, книги Саттера) утверждают, что лучше register НЕ использовать.

Да и auto с учетом обновления стандарта - тоже...

Автор: vol4ek 26.8.2013, 03:49
auto - Применяется только к локальным переменным. Переменные видны только в блоке, в которо они объявляются. По выходу из блока переменная уничтожается. Данный модификатор действует по умолчанию, поэтому явно обычно не употребляется.

register - Предписывает компилятору попытаться разместить данную локальную переменную в регистрах микропроцессора. Также как модификатор auto, данный модификатор действует по умолчанию, поэтому явно обычно не используется.

Автор: EnergoHokum 26.8.2013, 11:52
Эти спецификаторы -- тяжкое наследие прошлого, от которого, впрочем, потихоньку начинают отказываться. Так, ключевое слово auto в стандартах C++11 и выше обозначает уже автоматически выводимый компилятором тип переменной. Ну а про register -- обычно компилятору хватает сообразительности и самому раскидать переменные по доступным регистрам, и мешать-"помогать" ему в этом, пожалуй, не стоит.

Автор: hoz 27.8.2013, 11:27
Я так и думал. Мои сомнения развеялись этим обсуждением. Всех Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)