深入辨析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 
using namespace std;

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

int main() {
	cout<::testInt<::testChar<

你可能感兴趣的:(C++)