Re[2]: стиль: объявление статической переменной внутри функц
От: Roman Odaisky Украина  
Дата: 17.09.07 05:58
Оценка: :)
Здравствуйте, 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().
До последнего не верил в пирамиду Лебедева.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.