1. 程式人生 > >C++--類模板中的static關鍵字

C++--類模板中的static關鍵字

在類模板中定義一個static 型別的變數會發生什麼呢?

首先先看程式碼

#include <iostream>
using namespace std;

template <typename T>
class A
{
public:
	static T a;
};

template<typename T>
T A<T>::a = 0;

int main()
{
	A<int> a1, a2, a3;
	a1.a=10;
	a2.a++;
	a3.a++;
	cout << A<int>::a << endl;

	A<char>b1, b2, b3;
	b1.a='a';
	b2.a++;
	b3.a++;
	cout << A<char>::a << endl;
	return 0;
}
在這裡首先我想問個問題,a1,a2,a3中的a與b1,b2,b3中的a到底是一個a還是兩個不同的a。

想弄清楚這個問題,首先得明白類模板的編譯原理。

編譯器會對模板進行兩次編譯。

所以int家族使用的是自己的a,

char家族使用的是自己的a。

兩個a不是同一個a。