Как называются частные деструкторы статических объектов? [Дубликат]
Possible Duplicate:
Cannot access private member in singleton class destructor
Я реализую синглтон, как показано ниже.
class A
{
public:
static A& instance();
private:
A(void)
{
cout << "In the constructor" << endl;
}
~A(void)
{
cout << "In the destructor" << endl;
}
};
A& A::instance()
{
static A theMainInstance;
return theMainInstance;
}
int main()
{
A& a = A::instance();
return 0;
}
destructor is private, Будет ли это вызвано для объекта theMainInstance, когда программа собирается завершиться?
Я попробовал это в Visual Studio 6, это дало ошибку компиляции.
"cannot access private member declared in class..."
В Visual Studio 2010 это было скомпилировано иdestructor was called.
Каковы должны быть ожидания здесь в соответствии со стандартом?
Редактировать: путаница возникает, поскольку поведение Visual Studio 6 не так глупо. Можно утверждать, что конструктор A для статического объекта вызывается в контексте функции A. Ноdestructor is not called in the context of the same function, Это называется из глобального контекста.