类模板中的static关键字

来源:互联网 发布:linux man手册显示中文 编辑:程序博客网 时间:2024/06/07 13:57

从类模板实例化的每个模板类有自己的类模板数据成员,该模板类的所有对象共享一个static数据成员
和非模板类的static数据成员一样,模板类的static数据成员也应该在文件范围定义和初始化
每个模板类有自己的类模板的static数据成员副本
下面这个案例可以看出他的一些特性。

#include <iostream>template <typename T>class A{public:    static T a;};// 类模板的静态变量 也要在类的定义并初始化template <typename T>T A<T>::a = 0;class A_int{public:    static int a;};int A::a = 0;class A_char{public:    static char a;};char A::a = 0;int main(){    // 类模板中 不同的 模板类 中的静态变量是不共享的    // 每一个 模板类 都有自己的静态变量    A<int> a, b;    a.a = 100;    printf ("a = %d\n", b.a);    A<char> ch1, ch2;    ch1.a = 'A';    printf ("a = %c\n", ch2.a);    printf ("a = %c\n", b.a);    return 0;}
原创粉丝点击