求解释,解决方案

求解释,急。。。。。。
谁可以详细的给我解释一下下面的一段代码,顺便讲讲静态数据共享方面的知识
#include <iostream>
using namespace std;
class A{
private:
A(){}
A(A &a){}

public:
static A *Getobject()
{
return  &a;

}
private:
static A a;
};

------解决方案--------------------
将构造函数设置为私有,不让外界调用。使用静态函数来返回一个对象,也就是楼上所说的单例模式。只可以A::GetObject()来获得一个A类对象。A a;这样的语句都是错的 。
至于静态数据共享的话,静态数据是存储在对象外的,所有相同类的对象共享静态数据 
------解决方案--------------------
在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可避开因局部数组大小超过默认堆栈大小1MB造成程序不能正常运行的问题。