深入辨析C++中的static和const

    const和static在C++中经常被使用到。简单地说:const定义一个类实例化范围内的常量,而static定义的是类的静态成员变量是由一个类的所有实例对象共享的。

    再仔细说明一下:

  •     const成员变量不能在类的内部初始化,一般地是在构造函数中初始化(因此若有const成员变量,必须有显式构造函数)。
  •     static类静态成员变量同样不能在类的内部初始化,静态成员变量是和类相关的而不是和类的实例相关的,一般地静态成员变量的初始化只能在类定义体的外部(通常在类的实现文件中初始化)。如在main()函数中通过int testClass::basicValue = 1进行初始化。

    另外,也存在例外的情况!(在STL源码剖析中1.9.3中提到的),如果在class中含有const static integral data member, 那么根据C++标准规格,可以在class内部直接给予初值。所谓的integral泛指所有的整数型别,不单指int。如下示例程序:

#include <iostream>
using namespace std;

template <typename Type>
class testClass {
public:
	static const int testInt = 5;
	static const char testChar = 'A';
};

int main() {
	cout<<testClass<int>::testInt<<endl;
	cout<<testClass<int>::testChar<<endl;
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值