類模板的靜態成員數據

#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;
}

運行結果:

    對於同一類型的模板類實例,靜態數據成員是共享的,不同節點類型的模板類其靜態數據成員的值是不同的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章