Зачем использовать Static с переменной contexpr в файле .cpp? [дублировать]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Зачем использовать Static с переменной contexpr в файле .cpp? [дублировать]

Сообщение Anonymous »

Зачем использовать Static с переменной constexpr в файле .cpp? >struct MyClass
{
static bool IsMasked(qint8 Value);
};
< /code>
myclass.cpp
static constexpr qint8 Mask[8] = {
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80
};

bool MyClass::IsMasked(qint8 Value)
{
for (int i = 0; i < 8; ++i)
{
if (Value & Mask)
{
return true;
}
}
return false;
}

В этом примере переменная Mask определена в файле. Полем Однако, если мы удалим Static и сохраним только contexpr , переменная все равно будет оставаться ограниченной сферой текущей единицы перевода из -за характера contexpr .
Почему статический часто используется вместе с ConstexPR в таких случаях, даже если это кажется избыточным? Существуют ли какие -либо практические преимущества (например, оптимизация, поведение компилятора или что -то еще), чтобы явно отметить переменную ContexPR как статическое в таких сценариях?
i ' M Попытка понять, существует ли значимая разница между: < /p>
static constexpr qint8 Mask[8] = { /*...*/ };
< /code>
и < /p>
constexpr qint8 Mask[8] = { ... };


Подробнее здесь: https://stackoverflow.com/questions/793 ... a-cpp-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»