C++--類模板中的static關鍵字
阿新 • • 發佈:2019-01-08
在類模板中定義一個static 型別的變數會發生什麼呢?
首先先看程式碼
在這裡首先我想問個問題,a1,a2,a3中的a與b1,b2,b3中的a到底是一個a還是兩個不同的a。#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; }
想弄清楚這個問題,首先得明白類模板的編譯原理。
編譯器會對模板進行兩次編譯。
所以int家族使用的是自己的a,
char家族使用的是自己的a。
兩個a不是同一個a。