当类模板中含有静态成员时,通过确定参数实例化出不同的具体类,这些参数不同的类会维护各自的静态成员,不同类的静态成员之间互不影响。 类的静态成员变量是属于整个类的存储在全局区,由所有对象共享(ps:注意类的静态成员变量要在类内定义,在类外初始化)。具体的理解如图:
代码测试:
#include<iostream>
using namespace std;
template<class T>
class Person
{
public:
T value2;
static int value1;
};
template<class T>
int Person<T>::value1 = 0;
void test01()
{
Person<int>p1, p2, p3;
Person<char>p4, p5, p6;
p1.value1 = 10;
p4.value1 = 50;
cout << "p1.value1= " << p1.value1
<< " p2.value1= " << p2.value1
<< " p3.value1= " << p3.value1 << endl;
cout << "p4.value1 =" << p4.value1
<< " p5.value1= " << p5.value1
<< " p6.value1= " << p6.value1 << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
测试结果: