前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MFC中注释含义

MFC中注释含义

作者头像
用户1154259
发布2018-01-17 15:50:29
1.1K0
发布2018-01-17 15:50:29
举报

下面是 CStdioFile 类的部分列表,其中使用了 MFC 在其类中按类成员的用法划分它们时所采用的大多数标准注释

代码语言:javascript
复制
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 目录中

注意   \atlmfc\src\mfc 目录包含一个生成文件,该文件可与 NMAKE 一起使用以生成 MFC 库版本(包括浏览版本)。MFC 的浏览版本对于通过 MFC 调用结构本身进行跟踪非常有用。该目录中的 Readme.Txt 文件解释了如何使用此生成文件。

本文解释 MFC 用于注释每个类各部分的约定、这些注释的含义以及在每节中应该可以找到的内容。Visual C++ 向导对其创建的类使用类似的约定,您可能会发现这些约定对于您自己的代码很有用。

您可能已经熟悉 public、protected 和 private C++ 关键字。当查看 MFC 头文件时,您会发现每个类都可能具有上述每种关键字的几个。例如,公共成员变量和函数可能在多个 public 关键字之下。这是因为 MFC 基于成员变量和函数的使用而非允许的访问类型来分隔它们。MFC 对 private 的使用很保守;即使是被视为实现详细信息的项通常都受保护,但很多时候它们是公共的。尽管不鼓励访问实现详细信息,但 MFC 将决定权留给您。

在 MFC 源文件和“MFC 应用程序向导”创建的文件中,在类声明中都可以找到类似下面的注释(通常按此顺序):

// Constructors

// 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 可重写的成员函数。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-11-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档