Здравствуйте, Sni4ok, Вы писали:
I>>Приведи пример, пожалуйста, где стоит объявлять статическую переменную? S>все теже места, где разумно применять синглетоны или глобальные переменные,
Т. е., нигде?
S>а также использование статических констант.
До последнего не верил в пирамиду Лебедева.
Re[2]: стиль: объявление статической переменной внутри функц
Здравствуйте, eremeer, Вы писали:
E> Разрешите порассуждать человеку, не обремененному обширным опытом программирования и не претендующуему на непогрешимость и исчерпывающую полноту суждений.
Я бы проще сказал — те же преимущества и недостатки, что и у «одиночек»: трудно расширить, проблемы с инициализацией (в т. ч. thread safety), меньше оверхеда.
E>Недостатки E>Статический объект имеет время жизни равное времени жизни программы и создается даже в том случае, если функция, где он был объявлен, ни разу не вызывалась (в случае не шаблонных функций). Выход — отложенная инициализация.
#include <iostream>
int f()
{
std::cout << "F" << std::endl;
return 42;
}
int g()
{
static int const x = f();
return x;
}
int main()
{
//g();
}
По меньшей мере 2 компилятора не вызывают здесь f().
До последнего не верил в пирамиду Лебедева.
Re[2]: стиль: объявление статической переменной внутри функц
Здравствуйте, Erop, Вы писали:
S>>одна из проблем- инициализация локальных статических переменных в зависимости от компилятора может не являться thread safe.
E>А что, есть компиляторы, где является? Это какие? Или это от настроек всё зависит?
насколько мне известно(со слов других, сам не проверял), что на gcc под линукс — thread safe
Re[5]: стиль: объявление статической переменной внутри функц
Здравствуйте, Sni4ok, Вы писали:
S>насколько мне известно(со слов других, сам не проверял), что на gcc под линукс — thread safe
А как это реализуется, и главное, ЗА ЧТО? Это же накладно однако...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском