物件傾印自訂

這個主題適用於:

版本

Visual Basic

C#

F#

C++

Web Developer

Express

標題不適用於 標題不適用於 標題不適用於

僅適用原生

標題不適用於

Pro、Premium 和 Ultimate

標題不適用於 標題不適用於 標題不適用於

僅適用原生

標題不適用於

當您從 CObject 衍生類別時,使用 DumpAllObjectsSince 來傾印物件至輸出視窗時,您可以覆寫 Dump 成員函式以提供額外的資訊。

Dump 函式將物件的成員變數的文字表示寫入傾印內容 (CDumpContext)。 傾印內容類似 I/O 資料流。 您可以使用附加運算子 (<<) 將資料傳送至 CDumpContext

當您覆寫 Dump 函式時,您應該先呼叫 Dump 的基底類別版本來傾印基底類別物件的內容。 接著輸出衍生類別中每個成員變數的文字說明和值。

Dump 函式的宣告看起來像這樣:

class CPerson : public CObject
{
public:
#ifdef _DEBUG
    virtual void Dump( CDumpContext& dc ) const;
#endif

    CString m_firstName;
    CString m_lastName;
    // And so on...
};

因為只有在偵錯程式時,物件傾印才具有意義,Dump 函式的宣告會以 #ifdef _DEBUG / #endif 區塊括號起來。

在下列範例裡,Dump 函式先呼叫基底類別的 Dump 函式。 然後將每個成員變數的簡短說明和成員的值一起寫入至診斷資料流。

#ifdef _DEBUG
void CPerson::Dump( CDumpContext& dc ) const
{
    // Call the base class function first.
    CObject::Dump( dc );

    // Now do the stuff for our specific class.
    dc << "last name: " << m_lastName << "\n"
        << "first name: " << m_firstName << "\n";
}
#endif

您必須提供 CDumpContext 引數來指定傾印的輸出位置。 MFC 的偵錯版本提供一個可以傳送輸出至偵錯工具的預先定義 CDumpContext 物件 (名為 afxDump)。

CPerson* pMyPerson = new CPerson;
// Set some fields of the CPerson object.
//...
// Now dump the contents.
#ifdef _DEBUG
pMyPerson->Dump( afxDump );
#endif

請參閱

概念

物件傾印

其他資源

TRACE 巨集