примеры & quot; переменная, которая может быть легко принята за постоянную переменную, но на самом деле является непостоянной переменной & quot;

Я новичок в C ++ и пытаюсь изучить концепцию константного выражения. Я видел цитату ниже из C ++ primer 5th Edition.

В большой системе может быть трудно определить (наверняка), что инициализатор является константным выражением. Мы можем определить переменную const с помощью инициализатора, который мы считаем постоянным выражением. Однако, когда мы используем эту переменную в контексте, который требует константного выражения, мы можем обнаружить, что инициализатор не был константным выражением.

Может ли кто-нибудь привести примеры переменных, которые можно легко принять за постоянную переменную, но на самом деле она не постоянная? Я хочу быть в курсе всех постоянных и непостоянных переменных и стараться изо всех сил избегать их.

0

Решение

cppreference.com предоставляет хороший пример для этой проблемы:

// code by http://en.cppreference.com/w/User:Cubbi, CC-by-sa 3.0
#include <iostream>
#include <array>

struct S {
static const int c;
};
const int d = 10 * S::c; // not a constant expression: S::c has no preceding
// initializer, this initialization happens after const
const int S::c = 5;      // constant initialization, guaranteed to happen first
int main()
{
std::cout << "d = " << d << '\n';
std::array<int, S::c> a1; // OK: S::c is a constant expression
//  std::array<int, d> a2;    // error: d is not a constant expression
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector