类模板实例化的每个模板类都有自己的类模板静态数据成员,该模板类的所有对象
共享一个静态数据成员。
模板类的静态数据成员应在文件范围内初始化。
每个模板类有自己的类模板的静态数据成员副本。
#include<iostream>
using namespace std;
template <class T>
class A
{
T m;
static T n;
public:
A(T a):m(a){n+=m;}
void disp(){cout<<"m="<<m<<", n="<<n<<endl;}
};
template <class T>
T A<T>::n = 0; //静态数据成员的初始化
int main()
{
A<int> a(2), b(3);
a.disp();
b.disp();
A<double> c(1.2),d(4.6);
c.disp();
d.disp();
return 0;
}
本文通过实例演示了类模板中静态数据成员的概念及其初始化方法。每个模板实例化后的类都会拥有自己独立的一份静态成员变量副本,这些副本由该模板类的所有对象共享。通过具体的代码示例展示了不同模板实例间静态成员变量的变化情况。
359

被折叠的 条评论
为什么被折叠?



