对于不同的参数类型,static成员变量不共用,因为二次编译使不同参数类型的模板类分道扬镳,成为完全独立的两个类。
#include <iostream>
using namespace std;
template <typename T>
class A
{
public:
static T m_a;
protected:
private:
};
template <typename T>
T A<T>::m_a = 0;
int main()
{
A<int> a1, a2, a3;
a1.m_a = 10;
a2.m_a++;
a3.m_a++;
cout << A<int>::m_a << endl;//12
A<char> b1, b2, b3;
b1.m_a = 'a';
b2.m_a++;
b3.m_a++;
cout << A<char>::m_a << endl;//c
return 0;
}