константная переменная в функции, назначенной во время выполнения - PullRequest
1 голос
/ 27 февраля 2020

Я недавно понял, что у меня есть следующее в моем коде C ++, и он компилируется и запускается без проблем.

void MyClass::foo(int a) {
    const double x = a;
    ...
    //do stuff with x
    ...
}

Мой вопрос: я думал, что переменным констант было присвоено значение во время компиляции, и это дали мне ошибку компиляции, хотя в этом случае она явно назначается во время выполнения. Спецификатор const здесь игнорируется? Или происходит что-то более сложное? Должен ли я удалить спецификатор const?

1 Ответ

1 голос
/ 27 февраля 2020

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

Я думал, что переменным констант было присвоено значение во время компиляции

Что вы описываете: C ++ 11 constexpr переменные.

Должен ли я удалить спецификатор const?

Нет. Вы должны сделать все const, если вам не нужно, чтобы оно не было const.

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