Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
duran_duran
1 / 1 / 0
Регистрация: 11.01.2014
Сообщений: 20
#1

Статическе константы - C++

17.01.2014, 23:52. Просмотров 1024. Ответов 13
Метки нет (Все метки)

Для чего используют статические константы?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2014, 23:52     Статическе константы
Посмотрите здесь:

Стринговые константы в С++ - C++
Програмка не работает. Обьясните,пожалуйста,в чем проблема... Само задание звучит так: Вести стринговые константы,найти наибольшое...

Константы препроцесора - C++
А есть ли где-то список предустановленых констант препроцесора? Мне нужно узнать тип операционой системы, версию, и поочие. Есть ли где-то...

Константы в структурах - C++
есть массив структур. допустим 10 элементов. как инициализировать 5 элементов массива константами?

встроенные константы в С++ (pi e) - C++
Подскажите, существуют ли в С++ встроенные константы. Например pi=3.14.... или e=2.71.... Если да, то как их вызвать. Если...

Константы и указатели - C++
Как это работает? const int c = 2; const int* p1 = &c; int* p2 = (int*)p1; *p2 = 3; std::cout << c << " " << *p1 << " "...

Символьные константы - C++
Объясните смысл написанного

Ввод константы - C++
Имеется массив. Нужно чтоб пользователь вводил его размер, но для этого нужно чтоб переменная была константой. Вопрос как сделать так чтоб...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
Эксперт С++
15247 / 6879 / 1092
Регистрация: 02.05.2013
Сообщений: 11,256
Завершенные тесты: 1
18.01.2014, 01:00     Статическе константы #2
Статические константы разными бывают.
Например, статическая константа в глобальном пространстве имен.
Или локальная статическая константа. Или статический константный
член класса. Что именно интересует ?
duran_duran
1 / 1 / 0
Регистрация: 11.01.2014
Сообщений: 20
18.01.2014, 11:44  [ТС]     Статическе константы #3
Цитата Сообщение от Убежденный Посмотреть сообщение
Статические константы разными бывают.
Например, статическая константа в глобальном пространстве имен.
Или локальная статическая константа. Или статический константный
член класса. Что именно интересует ?
Статические константы как члены класса)
Убежденный
Системный программист
Эксперт С++
15247 / 6879 / 1092
Регистрация: 02.05.2013
Сообщений: 11,256
Завершенные тесты: 1
18.01.2014, 13:14     Статическе константы #4
Цитата Сообщение от duran_duran Посмотреть сообщение
Для чего используют статические константы?
"Для чего используют статические константы" = "для чего используют static" + "для чего используют const".


Ну например, экземплярам класса нужен какой-то общий, один на всех объект,
причем этот объект по своей сути неизменяемый. Вот и повод сделать его static const.
Статическое константное поле класса - хорошая альтернатива дефайнам и глобальным
переменным: оно не занимает место в экземплярах класса, и в то же время его
видимость не выходит за пределы scope класса, а доступ снаружи легко может
быть ограничен с помощью public или private. Хотя во многих случаях еще лучше
помещать такие объекты в анонимные пространства имен в файлах реализации.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.01.2014, 14:05     Статическе константы #5
Цитата Сообщение от Убежденный Посмотреть сообщение
Например, статическая константа в глобальном пространстве имен.
Вот это для чего испльзуют (если, конечно, используют)? Именно со static.
Убежденный
Системный программист
Эксперт С++
15247 / 6879 / 1092
Регистрация: 02.05.2013
Сообщений: 11,256
Завершенные тесты: 1
18.01.2014, 14:24     Статическе константы #6
Насколько я знаю, static использовали, когда неймспейсов в языке не было.
Сейчас в нем большого смысла в таком виде нет.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.01.2014, 14:34     Статическе константы #7
Я не об этом. Я о применении static к глобальной константе. Насколько я знаю, глобальная константа и так static (внутреннее связывание). Поэтому, вроде бы, и смысла применять к ней static нет. Или бывает, что есть?
Убежденный
Системный программист
Эксперт С++
15247 / 6879 / 1092
Регистрация: 02.05.2013
Сообщений: 11,256
Завершенные тесты: 1
18.01.2014, 14:50     Статическе константы #8
Цитата Сообщение от alsav22 Посмотреть сообщение
Насколько я знаю, глобальная константа и так static (внутреннее связывание).
Да, internal linkage (C++03, 3.5.3).

Поэтому, вроде бы, и смысла применять к ней static нет. Или бывает, что есть?
С технической точки зрения смысла нет. А так - ну разве что с точки зрения читаемости кода.
Видим const - сразу понимаем: ага, значит неизменяемая. Видим static или namespace - ага,
значит c ограниченной областью видимости. И не нужно вспоминать всякие пункты стандарта
MrGluck
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
18.01.2014, 19:53     Статическе константы #9
Очень часто константные члены класса имеет смысл делать статическими. Например - класс агрегирует определенное количество объектов и оно не изменяется для всех экземпляров. Вот в таком случае и имеет смысл делать константу-член статической.

Более того, делать константы нестатическими стало можно лишь в стандарте С++11, в С++98 надо обязательно было использовать static.
Убежденный
Системный программист
Эксперт С++
15247 / 6879 / 1092
Регистрация: 02.05.2013
Сообщений: 11,256
Завершенные тесты: 1
18.01.2014, 20:19     Статическе константы #10
Цитата Сообщение от MrGluck Посмотреть сообщение
делать константы нестатическими стало можно лишь в стандарте С++11, в С++98 надо обязательно было использовать static.
Поясните, что именно имеется в виду ?
В C++98 я не могу объявить в классе const-данные, не сделав их static ?
MrGluck
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
18.01.2014, 20:28     Статическе константы #11
Цитата Сообщение от Убежденный Посмотреть сообщение
Поясните, что именно имеется в виду ?
В C++98 я не могу объявить в классе const-данные, не сделав их static ?
Я неверно выразился.
В С++98 нельзя инициализировать константы если они не статические внутри класса таким вот образом:
C++
1
2
3
4
5
class A
{
    public:
    const int N = 10; // need static if C++98
};
То бишь если хотим константу, то остается либо список инициализации конструктора либо делать её статической.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
18.01.2014, 21:59     Статическе константы #12
Цитата Сообщение от MrGluck Посмотреть сообщение
делать константы нестатическими стало можно лишь в стандарте С++11
Кстати, это справедливо и не для констант.
Цитата Сообщение от MrGluck Посмотреть сообщение
В С++98 нельзя инициализировать константы если они не статические внутри класса таким вот образом
Дополнение: инициализация статических констант внутри класса возможна только для интегральных типов.
duran_duran
1 / 1 / 0
Регистрация: 11.01.2014
Сообщений: 20
18.01.2014, 22:39  [ТС]     Статическе константы #13
Спасибо всем за ответы!
Тогда получается использовать просто константы в классе очень часто получается нецелесообразным?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2014, 22:49     Статическе константы
Еще ссылки по теме:

Константы, переменные - C++
Отпишите пожалуст с начала до конца что происходит в этой программе =) void main() { //Описание переменных целого типа ...

Инициалиация константы - C++
Здравствуйте, вообщем на шестом ВС вроде была такая возможность, а 2010 ругается: int c=42; const int b=c; int Temp;

Указатели и константы - C++
В чем разница между записью const int * a и int * const a? Где то в книге читал, забыл, теперь не могу найти. Заранее спасибо!

Экспоненциальные Константы - C++
Всем доброго времени суток. Хотелось бы спросить такую вещь. Вид Экспоненциальной Константы же такой: {E|e} Тогда такая константа что...

Определение константы - C++
Помогите составить определение следующих данных - константа pi = π = 3.14159265358 (12 значащих цифр)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
MrGluck
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
18.01.2014, 22:49     Статическе константы #14
Очень часто этого просто не требуется, но насчет целесообразности я бы поспорил.
Yandex
Объявления
18.01.2014, 22:49     Статическе константы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru