先看没有模板的,直接看代码:
class testClass2
{
public:
static int _datai;
};
int testClass2::_datai = 5;
class testClass3
{
private:
static int _data1;
public:
static int _datai;
};
int testClass3::_data1 = 9;
int testClass3::_datai = 9;
在类内定义的静态成员变量,无论是private的还是public的,都需要在类外进行初始化
如何在类内进行初始化呢?
加一个const
如下:
static const char _datac = 'C';
需要注意的是,如果把静态成员变量的属性设置成了private的,那么是无法通过
cout<<testClass3::_data1<<endl;
类似这样的语句,因为是私有的.
然后看带模板的:
template<typename T>
class testClass
{
public:
static const int _datai = 5;
static const long _datal = 3L;
static const char _datac = 'C';
};
template<typename T>
class testClass1
{
public:
static int _datai;
};
template<> int testClass1<int>::_datai = 5;
初始化的方式不同 ,首先同样的需要在类外进行初始化,但是类型符号的前面需要加上
template<>
还需要提供实例化的具体的类型