【泛型编程】模板类中的static关键字

简介: 【泛型编程】模板类中的static关键字

首先我们知道,在类中,static关键字修饰的成员属于整个类,即类定义的所有关键字共享同一个static成员,如果不了解可以查看这篇博文:

image.png

那么在模板类中的静态成员是否是属于该模板所能代表的所有类型的类呢?下面通过一个程序测试一下:

1. #include <iostream>
2. using namespace std;
3. 
4. template<typename user_t>
5. class MyClass
6. {
7. public:
8.  static user_t a;
9. };
10. 
11. template<typename user_t>
12. user_t MyClass<user_t>::a = 0;
13. 
14. int main()
15. {
16.   MyClass<int> m1, m2;
17.   m1.a++;
18.   m2.a++;
19.   cout << "m1.a: " << m1.a << endl;
20.   cout << "m2.a: " << m2.a << endl;
21. 
22.   MyClass<char> m3, m4;
23.   m3.a = 'a';
24.   m4.a++;
25.   cout << "m1.a: " << m1.a << endl;
26.   cout << "m2.a: " << m2.a << endl;
27.   cout << "m3.a: " << m3.a << endl;
28.   cout << "m4.a: " << m4.a << endl;
29. 
30.   system("pause");
31.   return 0;
32. }

通过程序运行结果可以看到

                                     

这说明并不是所有类型的类都共享同一个静态成员。实际上模板类中的静态成员,同一个类型的类共享一个静态成员的副本。也就是说 MyClass<int> 定义的对象共享一个静态成员,MyClass<char> 也有自己的一个静态成员,以此类推,每个类型定义的对象都共享自己的静态成员。


相关文章
|
算法 安全 编译器
C++泛型编程之函数模板
C++泛型编程之函数模板
67 0
|
1月前
|
编译器 C语言 C++
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
19 1
|
1月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
41 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
1月前
|
C++
C++入门4——类与对象3-2(构造函数的类型转换和友元详解)
C++入门4——类与对象3-2(构造函数的类型转换和友元详解)
21 0
|
5月前
|
C++
C++类和类模板——入门
C++类和类模板——入门
41 1
|
算法 编译器 C++
C++ 泛型编程:函数模板
C++ 泛型编程:函数模板
46 0
|
6月前
|
存储 程序员 编译器
【C++ 模板类与虚函数】解析C++中的多态与泛型
【C++ 模板类与虚函数】解析C++中的多态与泛型
174 0
|
11月前
|
编译器 C++
类和对象:运算符重载
类和对象:运算符重载
|
算法 编译器 C++
C++泛型编程之类模板
C++泛型编程之类模板
52 0
|
存储 编译器 C++
【C++要笑着学】泛型编程 | 函数模板 | 函数模板实例化 | 类模板(二)
本章将正式开始介绍C++中的模板,为了能让大家更好地体会到用模板多是件美事!我们将会举例说明,大家可以试着把自己带入到文章中,跟着思路去阅读和思考,真的会很有意思!如果你对网络流行梗有了解,读起来将会更有意思!
141 1
【C++要笑着学】泛型编程 | 函数模板 | 函数模板实例化 | 类模板(二)