У меня есть следующий код:статические члены Си ++
void Foo() {
static std::vector<int>(3);
// Vector object is constructed every function call
// The destructor of the static vector is invoked at
// this point (the debugger shows so)
// <-------------------
int a;
}
Тогда-то я называю Foo
несколько раз в последовательности
Почему векторный объект получает построенный на каждом Foo()
вызова и почему это деструктор, вызванный сразу после объявления static ...
?
Update:
Я пытался реализовать функцию однажды вызова механизма, и я думал, что писать что-то вроде
static core::CallOnce(parameters)
где CallOnce
это имя класса будет очень приятно.
На мой взгляд, письмо static core::CallOnce call_once(parameters)
выглядит хуже, но все в порядке, я не могу ничего с этим поделать.
спасибо.
Почему это произошло мгновенно? –
@Michael: Хороший вопрос. Должен найти того, кто держит downvoting, не оставляя лишнего COMMENT! Для этого они нужны! (О, и +1) –
@James Знаете ли вы, случайно, почему это происходит? Почему не может быть назван неназванный объект, который выполняет некоторую работу в конструкторе как «обычную» статическую переменную и не может быть сконструирован-разрушен? –