Название: Объявить константу в классе Отправлено: Alex_C от Апрель 11, 2012, 15:37 Немного не в тему Qt, но в тему C++:
мне необходимо в объявлении класса объявить константу. Так правильно? Код: private: Название: Re: Объявить константу в классе Отправлено: Bepec от Апрель 11, 2012, 15:38 А статик то зачем?
Название: Re: Объявить константу в классе Отправлено: kambala от Апрель 11, 2012, 15:48 Немного не в тему Qt, но в тему C++: для этого есть раздел С++.мне необходимо в объявлении класса объявить константу. Так правильно? Код: private: инициализировать статики надо вне класса, например так: Код
Название: Re: Объявить константу в классе Отправлено: GreatSnake от Апрель 11, 2012, 16:23 инициализировать статики надо вне класса За исключением интегральных типов.Название: Re: Объявить константу в классе Отправлено: Nimbus от Апрель 11, 2012, 16:29 А статик то зачем? Чтобы при создании объектов для неё не выделялась память каждый раз. Я тоже практикую такой подход :)Название: Re: Объявить константу в классе Отправлено: Igors от Апрель 11, 2012, 16:33 По ходу дела такой вопрос
Код Есть ли уверенность что PI будет инициализировано до D2R ? Название: Re: Объявить константу в классе Отправлено: GreatSnake от Апрель 11, 2012, 16:42 Есть ли уверенность что PI будет инициализировано до D2R ? Хороший вопрос :)Название: Re: Объявить константу в классе Отправлено: Igors от Апрель 11, 2012, 16:45 Хороший вопрос :) Ага :) Из той же оперыКод А так можно? Название: Re: Объявить константу в классе Отправлено: V1KT0P от Апрель 11, 2012, 16:49 По ходу дела такой вопрос Есть вероятность что D2R будет посчитан еще на этапе компиляции.Код Есть ли уверенность что PI будет инициализировано до D2R ? Название: Re: Объявить константу в классе Отправлено: GreatSnake от Апрель 11, 2012, 16:55 Есть вероятность что D2R будет посчитан еще на этапе компиляции. Точно!Название: Re: Объявить константу в классе Отправлено: Igors от Апрель 11, 2012, 17:02 Есть вероятность что D2R будет посчитан еще на этапе компиляции. Никто не спорит что такая вероятность есть - и даже велика :) Но речь идет о "гарантиях" (а не о "вероятности"). Иногда надо быть нудным напр "а где в стандарте это написано"?Название: Re: Объявить константу в классе Отправлено: V1KT0P от Апрель 11, 2012, 17:11 Есть вероятность что D2R будет посчитан еще на этапе компиляции. Никто не спорит что такая вероятность есть - и даже велика :) Но речь идет о "гарантиях" (а не о "вероятности"). Иногда надо быть нудным напр "а где в стандарте это написано"?Название: Re: Объявить константу в классе Отправлено: GreatSnake от Апрель 11, 2012, 17:13 Вот GCC например предупреждает, если в конструкторе переменные инициализируются не в том порядке в каком объявлены. Так что думаю с GCC проблем не будет. Имхо, это немного другое.Название: Re: Объявить константу в классе Отправлено: kambala от Апрель 11, 2012, 17:30 инициализировать статики надо вне класса За исключением интегральных типов.Название: Re: Объявить константу в классе Отправлено: Igors от Апрель 11, 2012, 17:32 Почитай документацию по тому компилятору который используешь =). Вот GCC например предупреждает, если в конструкторе переменные инициализируются не в том порядке в каком объявлены. Так что думаю с GCC проблем не будет. Что-то не то Вы рекомендуете :) Если это зависит от компилятора - то лучше такую конструкцию const не использовать и обойтись #define. Потому что только у меня 3 компилятора (gcc, icc и вындозный), а у других часто больше. Здесь хорошо бы прильнуть к стандарту.. Название: Re: Объявить константу в классе Отправлено: V1KT0P от Апрель 11, 2012, 17:41 Почитай документацию по тому компилятору который используешь =). Вот GCC например предупреждает, если в конструкторе переменные инициализируются не в том порядке в каком объявлены. Так что думаю с GCC проблем не будет. Что-то не то Вы рекомендуете :) Если это зависит от компилятора - то лучше такую конструкцию const не использовать и обойтись #define. Потому что только у меня 3 компилятора (gcc, icc и вындозный), а у других часто больше. Здесь хорошо бы прильнуть к стандарту.. А так качай стандарт и читай, вроде это то что надо: Цитировать 12.6.2 Initializing bases and members Название: Re: Объявить константу в классе Отправлено: Igors от Апрель 12, 2012, 10:30 А так качай стандарт и читай, вроде это то что надо: Так а причем здесь базовые классы и члены класса?Цитировать 12.6.2 Initializing bases and members В общем посмотрел я стандарт, понял так - во всяком случае для интегрального типа с точки зрения инициализации нет разницы между глобальными, статическими переменными, статическими членами классов и константами. Все инициализируется однообразно как "non-local variable". В качестве присваиваемого значения могут использоваться любые переменные, выражения и константы объявленные ранее. Итого Код конструкция корректна и соответствует стандарту Название: Re: Объявить константу в классе Отправлено: twp от Апрель 20, 2012, 18:35 Цитировать Prefer enums to define constants over static const int or defines. источник (http://qt-project.org/wiki/Coding-Conventions)enum values will be replaced by the compiler at compile time, resulting in faster code defines are not namespace safe (and look ugly) Название: Re: Объявить константу в классе Отправлено: navrocky от Апрель 20, 2012, 19:37 Цитировать Prefer enums to define constants over static const int or defines. источник (http://qt-project.org/wiki/Coding-Conventions)enum values will be replaced by the compiler at compile time, resulting in faster code defines are not namespace safe (and look ugly) |