可能重复:
在单例类的析构函数不能访问私有成员
我如下实施单。
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;
}
析构函数是私有的 。 这会不会被调用为当程序即将终止对象theMainInstance?
我想这在Visual Studio 6中,它给了编译错误。
"cannot access private member declared in class..."
在Visual Studio 2010中,这引起了编译和析构函数被调用 。
你应该根据标准是期望在这里?
编辑:所以产生了困惑,因为Visual Studio的6行为也不是那么愚蠢。 可以认为,A对静态对象的构造被称为A的功能的情况下,但析构函数是不是在同一个函数的情况下调用 。 这是从全球范围内调用。