Вот такое встречается:
// In header
const std::string SOME_STR = "some value";
const std::string SOME_STR_ARR[] = { "some value one", "some value two" };
(вместо std::string можно QString или CString по вкусу, или даже не строку. вместо const можно static const — разницы не делает).
Надо избегать, особенно в больших проектах с большим числом взаимосвязей.
Потому что компилятор реально создаст такой объект на каждую единицу трансляции, куда хедер включен.
(Выбросить не может, видимо, потому, что это .dll вызов)
И время линковки растёт как число .cpp, куда хедер прямо или косвенно попал, умноженное на количество таких объектов в нём.
В моём текущем проекте время линковки место одной минуты было пять, и это время, которое тратится даже при изменении одного файла!
Фикс — изменение на простой указатель, которому конструктор не нужен, и который легко выбрасывается:
// In header
const char* const SOME_STR = "some value";
ну или отказ от внутреннего связывания:
// In header
extern const std::string SOME_STR;
// In .cpp
extern const std::string SOME_STR = "some value";