Скорее простой вопрос. Где я могу хранить сообщения об ошибках, исключения, пользователя? До сих пор я всегда указывал локальные строки внутри функции, где она будет вызываться и не беспокоиться. , например.хранение пользователя, ошибка, сообщения об исключениях (C++)
SomeClass::function1(...)
{
std::string str1("message1");
std::string str2("message2");
std::string str3("message3");
...
// some code
...
}
Внезапно я понял, что с момента инициализации строительства & называется каждый раз, и это может быть довольно дорогим. Было бы лучше хранить их как статические строки в классе или даже в отдельном модуле? Локализация здесь не здесь.
Заранее спасибо.
В большинстве современных реализаций не выполняется копирование при записи. Преимущество, которое они обеспечивают (с точки зрения производительности), превосходит количество проблем, чтобы заставить его быть потокобезопасным. Чтобы иметь дело с многопоточными средами, вам нужно будет добавить блокировки для защиты всех операций (как чтения, так и записи), что в конечном итоге приведет к значительному снижению производительности. –
Предупреждение. Функция local statics (например, str_quux в вашем примере) не инициализируется при запуске программы, а при первом выполнении содержащейся функции. Это вызывает проблемы безопасности потоков. –