MFC中註釋含義

下面是 CStdioFile 類的部分列表,其中使用了 MFC 在其類中按類成員的用法劃分它們時所採用的大多數標準註釋 程序員

class CStdioFile : public CFile { DECLARE_DYNAMIC(CStdioFile) public: // Constructors
 CStdioFile(); ... // Attributes
FILE* m_pStream;    // stdio FILE
... // Operations
virtual void WriteString(LPCTSTR lpsz); ... virtual LPTSTR ReadString(LPTSTR lpsz, UINT nMax); ... // Implementation

public: ... };

這些註釋以一致的方式標記包含類型類似的類成員的類聲明節。注意,這些註釋是 MFC 約定,不是固定規則。 安全

使用 MFC 源文件函數

Microsoft 基礎類 (MFC) 庫提供了完整的源代碼。頭文件 (.h) 位於 \atlmfc\include 目錄中,而實現文件 (.cpp) 位於 \atlmfc\src\mfc 目錄中spa

注意   \atlmfc\src\mfc 目錄包含一個生成文件,該文件可與 NMAKE 一塊兒使用以生成 MFC 庫版本(包括瀏覽版本)。MFC 的瀏覽版本對於經過 MFC 調用結構自己進行跟蹤很是有用。該目錄中的 Readme.Txt 文件解釋瞭如何使用今生成文件。code

本文解釋 MFC 用於註釋每一個類各部分的約定、這些註釋的含義以及在每節中應該能夠找到的內容。Visual C++ 嚮導對其建立的類使用相似的約定,您可能會發現這些約定對於您本身的代碼頗有用。對象

您可能已經熟悉 public、protected 和 private C++ 關鍵字。當查看 MFC 頭文件時,您會發現每一個類均可能具備上述每種關鍵字的幾個。例如,公共成員變量和函數可能在多個 public 關鍵字之下。這是由於 MFC 基於成員變量和函數的使用而非容許的訪問類型來分隔它們。MFC 對 private 的使用很保守;即便是被視爲實現詳細信息的項一般都受保護,但不少時候它們是公共的。儘管不鼓勵訪問實現詳細信息,但 MFC 將決定權留給您。blog

在 MFC 源文件和「MFC 應用程序嚮導建立的文件中,在類聲明中均可以找到相似下面的註釋(一般按此順序):事件

// Constructorsit

// Attributes自動化

// Operations

// Overridables

// Implementation

// Implementation /implimen'teiʃən/ n實現

// Implementation 節是任何 MFC 類聲明中最重要的部分。

此節包括全部的實現詳細信息。成員變量和成員函數均可以出如今此節中。在未來的 MFC 版本中,該行下面的全部內容均可能更改。不該依賴 // Implementation 行下的詳細信息,除非只能這樣作。另外,未記錄在實現行下聲明的成員,但在技術說明中討論了某些實現。不管基類中的虛函數是在哪一節中定義的,該基類函數的重寫都包括在本節中,由於函數重寫基類實現這一事實被視爲實現詳細信息。這些成員一般是受保護的,但並不是老是如此。

從註釋示例下的 CStdioFile 列表中能夠看到,在 // Implementation 註釋下面聲明的成員可聲明爲 public、protected 或 private。但使用這些成員時應謹慎,由於它們未來可能更改。將一組成員聲明爲 public 對使類庫實現正常工做可能有必要。但這並不意味着能夠安全地使用這樣聲明的成員。

注意   在 // Implementation 註釋的上方或下方能夠找到其他類型的註釋。不管出如今上方仍是下方,這些註釋都描述在它們下面聲明的成員類型。若是它們出如今 // Implementation 註釋下方,則應假定這些成員在未來的 MFC 版本中可能更改。 

// Attributes屬性,特性,特質

MFC 類聲明中的 // Attributes 節包含對象的公共特性(或屬性)。這些特性或屬性一般是成員變量或 Get/Set 函數。「Get」「Set」函數能夠是虛擬的,也能夠不是虛擬的。「Get」函數通常爲 const,由於大多數狀況下它們都沒有反作用。這些成員一般是公共的;受保護的屬性和私有屬性一般在實現節中。

在註釋示例下,CStdioFile 類的示例列表中包含一個成員變量 m_pStream。CDC 類在此註釋下列出近 20 個成員。

注意   大類(如 CDC 和 CWnd)的成員可能很是多,若只是在一組中列出全部屬性,對清楚地描述成員並無多大幫助。在這種狀況下,類庫使用標頭形式的其餘註釋來進一步描述成員。例如,CDC 使用 // Device-Context Functions、// Drawing Tool Functions、// Drawing Attribute Functions 等等。表示屬性的組將遵循上述普通語法。許多 OLE 類都有一個稱爲 // Interface Maps 的實現節。 

// Operations 註釋

MFC 類聲明中的 // Operations 節包含成員函數;能夠在對象上調用這些函數,以使該對象執行任務或執行操做。這些函數通常是非 const 的,由於它們一般有反作用。它們能夠是虛擬的,也能夠不是虛擬的,具體取決於類的須要。這些成員一般是公共的。

在註釋示例中的 CStdioFile 類的示例列表中,此註釋下包括兩個成員函數:ReadString 和 WriteString。

與屬性同樣,操做也能夠進一步細分。

 

// Constructors 註釋

MFC 類聲明中的 // Constructors 節聲明構造函數(從 C++ 的角度)以及實際使用對象所需的任何初始化函數。例如,CWnd::Create 位於構造函數節中,由於在使用 CWnd 對象以前,必須首先調用 C++ 構造函數,而後調用 Create 函數來完整構造它。這些成員一般是公共的。

例如,CStdioFile 類有三個構造函數,其中一個顯示在註釋示例下的列表中。

 

// Overridables 註釋

MFC 類聲明中的 // Overridables 節包含虛函數;當您須要修改基類行爲時,能夠在派生類中重寫這些函數。虛函數的名稱一般以「On」開頭,但 On 不是絕對須要的。此處的函數旨在被重寫,而且常實現或提供某種類型的回調掛鉤。這些成員一般是受保護的。

在 MFC 自己中,純虛函數老是放在此節中。C++ 中的純虛函數是下面這樣的形式: 

virtual void OnDraw( ) = 0;

在註釋示例中的 CStdioFile 類的示例列表中不包括任何可重寫節。另外一方面,CDocument 類列出了大約 10 個可重寫的成員函數。

在某些類中還能夠看到註釋 // Advanced Overridables。這些是隻有高級程序員才應嘗試重寫的函數。您可能永遠不須要重寫它們。

注意   本文描述的約定一般也適用於自動化(之前稱爲 OLE 自動化)方法和屬性。自動化方法相似於 MFC 操做。自動化屬性相似於 MFC 特性。自動化事件(支持 ActiveX 控件,之前稱爲 OLE 控件)相似於 MFC 可重寫的成員函數。

相關文章
相關標籤/搜索