类模板实例化的每个模板类都有自己的类模板静态数据成员,该模板类的所有对象共享一个静态数据成员。
比如int的所有实例共享一个静态数据成员,char的所有实例共享一个。
下面来看个例子:
#include <iostream>
using namespace std;
template <typename T>
class testClass{
public:
static int _data;
};
int testClass<int>::_data = 1; //对静态成员进行初始化
int testClass<char>::_data = 2;
int main()
{
cout << testClass<int>::_data << endl;
cout << testClass<char>::_data << endl;
testClass<int> obji1, obji2;
testClass<char> objc1, objc2;
cout << obji1._data << endl;
cout << obji2._data << endl;
cout << objc1._data << endl;
cout << objc2._data << endl;
obji1._data = 3;
objc2._data = 4;
cout << obji1._data << endl;
cout << obji2._data << endl; //相同类(int)的实例共用一个
cout << objc1._data << endl;
cout << objc2._data << endl;
return 0;
}
注意:如果不是模板类,则所有的类实例共享一个静态成员。