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

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

Войти
Регистрация
Восстановить пароль
 
thick_int
Заблокирован
#1

Такие разные константы - C++

23.11.2011, 09:03. Просмотров 513. Ответов 11
Метки нет (Все метки)

Существует ли какое-нибудь правило, согласно которому можно железно определить, что вот эта константа известна на стадии компиляции (а,следовательно, может быть использована для задания размерности массива), а вот эта константа не является таковой (то есть, ее значение на стадии коммпиляции не известно)?

Интуция и здравый смысл, конечно, хорошо, но наверно все же должно быть какое-то правило.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 09:03     Такие разные константы
Посмотрите здесь:

Такие разные конструкторы - C++
здравствуйте, есть такой код: class ArrayWrapper { public: ArrayWrapper () : _p_vals( new int ) ,...

изменение константы - C++
Добрый день, только начал учить с++, поэтому сильно не бейте :) интересует такой гипотетический вопрос в целях обучения const int ic...

Константы, вычисление... - C++
Только начали учить с++ и уже завалили лабами на понедельник, а я его (с++) в глаза первый раз позавчера увидел :( времени осваивать...

константы в классах - C++
в классе используется константа типа double. Как правильно задать ее? как static const double внутри класса или просто написать...

Указатели и константы - C++
Добрый вечер, будьте добры раскрыть смысл каждой из трех строк: const int* ptr; int* const ptr; int const* ptr;

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bers
Заблокирован
23.11.2011, 09:14     Такие разные константы #2
Цитата Сообщение от thick_int Посмотреть сообщение
Существует ли какое-нибудь правило, согласно которому можно железно определить,
когда вы пишите
C++
1
const int A=333;
Вы знаете, константа это, или нет?

Если же вам динамически (программно) понадобилось знание о типе - признак ущербной архитектуры
thick_int
Заблокирован
23.11.2011, 09:18  [ТС]     Такие разные константы #3
Нет, мне не динамически нужно, а обычно.
Я так понимаю, что констнта на стадии компиляции - это выражение, которое может быть вычислено стандартным калькулятором, использующим в качестве аргументов числовые литералы.
Поправьте, если не так.
Bers
Заблокирован
23.11.2011, 09:31     Такие разные константы #4
Цитата Сообщение от thick_int Посмотреть сообщение
констнта на стадии компиляции - это выражение, которое может быть вычислено стандартным калькулятором,
Не знаю, что такое "стандартный калькулятор".

Константа на стадии компиляции - это просто кучка голых данных, имеющие тип.
Если компилятор увидит, что нигде в программе не требуется получить адрес этой константы - он даже память под неё не выделит, тупо скопипастит её значение везде, где оно используется.

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

В некотором смысле, единственная разница между #define подстановкой и константой в том, что последняя имеет тип (выполняется проверка на стадии компиляции), а так же может иметь адрес.
thick_int
Заблокирован
23.11.2011, 09:35  [ТС]     Такие разные константы #5
То есть стандарт по этому вопросу умалчивает и остается полагаться на интуициию.
Bers
Заблокирован
23.11.2011, 09:37     Такие разные константы #6
Цитата Сообщение от thick_int Посмотреть сообщение
Существует ли какое-нибудь правило, согласно которому можно железно определить, что вот эта константа известна на стадии компиляции
ЛЮБАЯ КОНСТАНТА ИЗВЕСТНА НА СТАДИИ КОМПИЛЯЦИИ
thick_int
Заблокирован
23.11.2011, 09:40  [ТС]     Такие разные константы #7
Не любая.
Например так:
C++
1
2
int n = 5;
const int m(n);
Или может быть я путаю константу и литерал.
Bers
Заблокирован
23.11.2011, 09:48     Такие разные константы #8
C++
1
2
int n = 5;
const int m(n);
я честно говоря потерялся)) надо подумать

Добавлено через 3 минуты
черт... не знал даже, что так можно.

Добавлено через 16 секунд
Из этого можно сделать далеко идущие последствия
thick_int
Заблокирован
23.11.2011, 09:49  [ТС]     Такие разные константы #9
Ну у меня возникли сомнения вот в связи с чем.
Сперва я очень обрадовался, что вроде, как любая переменная, объявленная с типом const int может использоваться в качестве размерности массива. А на самом деле, вот не любая.
То есть константа константе рознь.
Bers
Заблокирован
23.11.2011, 09:50     Такие разные константы #10
Цитата Сообщение от thick_int Посмотреть сообщение
Сперва я очень обрадовался, что вроде, как любая переменная, объявленная с типом const int может использоваться в качестве размерности массива. А на самом деле, вот не любая.
То есть константа константе рознь.
Любая жеж
thick_int
Заблокирован
23.11.2011, 09:56  [ТС]     Такие разные константы #11
Не понял, а что такое жеж?

сразу же еще, чтобы не создавать лишней темы, такой вопрос.

Допустим у меня есть класс, в котором один из его членов объявлен со спецификатором static.
Читая один учебник, у меня сложилось мнение, что доступ к этому члену могут иметь только функции-члены, также объявленные со спецификатором static.
Читая другой учебник, понял, что и обычные функции-члены могут иметь доступ к этому static-члену.
А как правильно на самом деле?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2011, 10:00     Такие разные константы
Еще ссылки по теме:

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Bers
Заблокирован
23.11.2011, 10:00     Такие разные константы #12
Цитата Сообщение от thick_int Посмотреть сообщение
А как правильно на самом деле?
Доступ к нему имеет любой, кто знаком с самим классом.
Получить доступ к статик-мемберам можно даже при отсутствии экземпляров данного класса
Yandex
Объявления
23.11.2011, 10:00     Такие разные константы
Ответ Создать тему
Опции темы

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