Russian Qt Forum
Ноябрь 27, 2024, 12:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Объявить константу в классе  (Прочитано 15579 раз)
V1KT0P
Гость
« Ответ #15 : Апрель 11, 2012, 17:41 »

Почитай документацию по тому компилятору который используешь =). Вот GCC например предупреждает, если в конструкторе переменные инициализируются не в том порядке в каком объявлены. Так что думаю с GCC проблем не будет.
Что-то не то Вы рекомендуете Улыбающийся  Если это зависит от компилятора - то лучше такую конструкцию const не использовать и обойтись #define. Потому что только у меня 3 компилятора (gcc, icc и вындозный), а у других часто больше.

Здесь хорошо бы прильнуть к стандарту..
Дело в том что некоторые компиляторы могут иметь свои особенности и не до конца соответствовать стандарту.
А так качай стандарт и читай, вроде это то что надо:
Цитировать
12.6.2 Initializing bases and members
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Апрель 12, 2012, 10:30 »

А так качай стандарт и читай, вроде это то что надо:
Цитировать
12.6.2 Initializing bases and members
Так а причем здесь базовые классы и члены класса?

В общем посмотрел я стандарт, понял так

- во всяком случае для интегрального типа с точки зрения инициализации нет разницы между глобальными, статическими переменными, статическими членами классов и константами. Все инициализируется однообразно как "non-local variable". В качестве присваиваемого значения могут использоваться любые переменные, выражения и константы объявленные ранее.

Итого
Код
C++ (Qt)
class CTest {
..
static const double PI = 3.151529;
static const double D2R = 180 / PI;
};
 
конструкция корректна и соответствует стандарту
Записан
twp
Гость
« Ответ #17 : Апрель 20, 2012, 18:35 »

Цитировать
Prefer enums to define constants over static const int or defines.
    enum values will be replaced by the compiler at compile time, resulting in faster code
    defines are not namespace safe (and look ugly)
источник
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #18 : Апрель 20, 2012, 19:37 »

Цитировать
Prefer enums to define constants over static const int or defines.
    enum values will be replaced by the compiler at compile time, resulting in faster code
    defines are not namespace safe (and look ugly)
источник
К сожалению подходит только для целых чисел.
Записан

Гугль в помощь
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.069 секунд. Запросов: 23.