線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:924
推到 Plurk!
推到 Facebook!

建構式的疑惑

尚未結案
fullgui
一般會員


發表:22
回覆:28
積分:10
註冊:2003-04-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-06 17:03:17 IP:203.64.xxx.xxx 未訂閱
請問各位大大,class CMemReader 中的建構式從:以後"CAsyncReader(NAME("Mem Reader"), NULL, pStream, phr)"是什麼意思?是建構式所謂的初值串列(initializer list)嗎?還是其他的含意?請各位大大解決小弟疑惑,謝謝。        
 
class CAsyncReader : public CBaseFilter
{
protected:
    // filter-wide lock
    CCritSec m_csFilter;        // all i/o done here
    CAsyncIo m_Io;        // our output pin
    CAsyncOutputPin m_OutputPin;        // Type we think our data is
    CMediaType            m_mt;    public:
                
    // construction / destruction        CAsyncReader(
        TCHAR *pName,
        LPUNKNOWN pUnk,
        CAsyncStream *pStream,
        HRESULT *phr);
    ~CAsyncReader();        // --- CBaseFilter methods ---
    int GetPinCount();
    CBasePin *GetPin(int n);        // --- Access our media type
    const CMediaType *LoadType() const
    {
        return &m_mt;
    }        virtual HRESULT Connect(
        IPin * pReceivePin,
        const AM_MEDIA_TYPE *pmt   // optional media type
    )
    {
        return m_OutputPin.CBasePin::Connect(pReceivePin, pmt);
    }
};    class CMemReader : public CAsyncReader
{
public:        //  We're not going to be CoCreate'd so we don't need registration
    //  stuff etc
    STDMETHODIMP Register()
    {
        return S_OK;
    }
    STDMETHODIMP Unregister()
    {
        return S_OK;
    }
    CMemReader(CMemStream *pStream, CMediaType *pmt, HRESULT *phr) :
        CAsyncReader(NAME("Mem Reader"), NULL, pStream, phr)
    {
        m_mt = *pmt;
    }
};    
allenchan
資深會員


發表:10
回覆:306
積分:283
註冊:2004-01-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-06 21:30:17 IP:61.62.xxx.xxx 未訂閱
子類別 CMemReader 的 constructor 在 member initialization list 中呼叫父類別 CAsyncReader 的 constructor 用來初始其父子共同的 member,然後子類別 CMemReader 在自己的 constructor 做一些自己衍生之後所需的初始化動作。
fullgui
一般會員


發表:22
回覆:28
積分:10
註冊:2003-04-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-08 09:29:11 IP:203.64.xxx.xxx 未訂閱
謝謝allenchan的回答^^,不過這種寫法是不是有什麼好處或是有其他含意?不然為何不分開去呼叫兩個class的建構式?原諒小弟的蠢問題.....
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-09 20:05:44 IP:221.169.xxx.xxx 未訂閱
有時候父類別會有好幾個建構子 子類別在建構的時候就需要指定是哪一個建構子 另一個原因是,父類別的建構要先於子類別 而唯一一個能讓父類別建構子優先執行的地方就只有接在子類別建構的地方
fullgui
一般會員


發表:22
回覆:28
積分:10
註冊:2003-04-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-13 16:27:05 IP:203.64.xxx.xxx 未訂閱
要將問題結案,因為是allenchan先回答,所以就由他得分,至於justdo大大,就不好意思了,不過,還是非常謝謝兩位的回答
系統時間:2024-07-08 13:50:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!