C++ 怎么可以这样子写?
本帖最后由 vipygd 于 2013-11-20 20:35:37 编辑
/*
#include <iostream>
using namespace std;
class Singleton
{
public:
static Singleton *GetInstance()
{
return const_cast<Singleton *>(m_Instance);
}
void Show()
{
cout<<m_Test<<endl;
}
private:
Singleton(){ m_Test = 10; }
static const Singleton *m_Instance;
int m_Test;
};
const Singleton *Singleton::m_Instance = new Singleton();
lz,你需要搞清楚类中定义静态变量,那你要在什么地方进行初始化呢?? 类的静态变量是需要在类的外部进行初始化的哦!!!
是的,这个我知道的,我是在外部进行初始化的。现在我是使用new Singleton()进行初始化的,但是Singleton的构造函数是private的,既然是private的,为什么在外部能进行new操作呢?
你的误解在于,以为{}之外就是类外。
那是?能说明白点吗?
int g() { printf("::g()\n"); return 0; }
class Foo {
static int n;
static int g() { printf("Foo::g()\n"); return 1; }
};
int Foo::n = g();