#include <iostream>
using namespace std;
///////////////////////////////////////////
//模板類實例的靜態成員數據
template<class Type>
class CList
{
Type *m_pHeader;
int m_Nodes;
public:
CList()
{
m_pHeader = NULL;
m_Nodes = 0;
}
static int m_ListValue;
};
class CNode{
CNode* m_pNext;
int m_data;
CNode()
{
m_pNext = NULL;
m_data = 0;
}
};
class CFlow{
CFlow* m_pNext;
char m_data;
CFlow()
{
m_pNext = NULL;
m_data = ' ';
}
};
//模板類的靜態成員變量初始化
template<class Type>
int CList<Type>::m_ListValue = 10;
int _tmain(int argc, _TCHAR* argv[])
{
CList<CNode> listNode; //不定義對象也可以
cout<<"listNode的成員初始值是:"<<CList<CNode>::m_ListValue<<endl;
CList<CNode>::m_ListValue = 2018;
cout<<"listNode成員改變後值爲:"<<CList<CNode>::m_ListValue<<endl;
CList<CFlow> listFlow;
cout<<"listFlow的成員初始值是:"<<CList<CFlow>::m_ListValue<<endl;
CList<CFlow>::m_ListValue = 2028;
cout<<"listFlow成員改變後值爲:"<<CList<CFlow>::m_ListValue<<endl;
return 0;
}
運行結果:
對於同一類型的模板類實例,靜態數據成員是共享的,不同節點類型的模板類其靜態數據成員的值是不同的。