C++类内静态成员的初始化

先看没有模板的,直接看代码:



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<>

还需要提供实例化的具体的类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值