CArray的參數如何使用,TYPE與ARG_TYPE的解釋

CArray的參數如何使用,TYPE與ARG_TYPE的解釋

數組---這個C語言中的怪物,自從被直接繼承到C++中,無數有識之士們前赴後繼、絞盡腦汁的試圖尋找一種能夠動態增加的替代數據類型。固然,最著名的,應該就是vector向量。可是,它也仍是渾身綠毛,迭代的出現,幾乎完全的摧毀了它僅存的一點優勢。因此,引入MFC以後,微軟斬釘截鐵的拋棄了標準C++的模板庫。 數組

    CArray是MFC中很是重要的幾個類模板之一,其餘還有CList、CMap,他們的定義略微有點晦澀,CArray聲明以下: 函數

template<class TYPE, class ARG_TYPE> 繼承

class CArray : public CObject element

從中,咱們能夠看出來,CArray是繼承自CObject,應該屬於MFC的體系,看這2個參數: 原型

TYPE:這是一個用來返回的類型,通常來講,它應該和ARG_TYPE一致,但不絕對。 源碼

ARG_TYPE:相對於TYPE,它是用來傳入的,ARG,我想應該是argument(參數)的意思。 模板

如何來理解這兩個參數呢? class

舉個簡單的例子吧,定義一個以CString爲元素的動態數組: List

tpyedef CArray<CString, CString&>             CArrStr; 數據類型

如今,咱們構造了一個以CString爲元素的動態數組,你能夠用Add函數來添加一個函數,也能夠用GetAt函數來得到一個元素。這恰好是兩個幾乎相反的操做,Add函數的原型是:

int Add(ARG_TYPE newElement);

咱們用CString&替換ARG_TYPE以後,就能夠獲得以下的實現:

int Add(CString& newelement);

原來是這樣啊,徹底符合咱們的平常習慣。再來看看GetAt函數的原型:

    TYPE GetAt(int nIndex) const;

    一樣,咱們替換TYPE以後,獲得的是:

CString GetAt(int nIndex) const;

很簡單,很是容易理解。若是你有興趣去查看CArray的源碼的話,你會發現全部的入參—也就是向CArray提供的參數,都是ARG_TPYE,而全部的由CArray返回的類型都是TYPE,那麼咱們如今,應該很是清楚CArray參數使用方法了,它一樣適合於其餘的類模板。

相關文章
相關標籤/搜索