设为首页 加入收藏

TOP

8.9.3 实现CBox类(5)
2013-10-07 16:10:15 来源: 作者: 【 】 浏览:76
Tags:8.9.3 实现 CBox

8.9.3  实现CBox类(5)

4. 定义CBox类

如果在Class View选项卡上单击Ex8_12左边的符号è,则会展开该项目树,我们看到现在项目中已经定义了CBox类。项目中的所有类都将显示在这个树中。通过双击树中的类名,或者单击显示代码窗格上方的标签,就可以查看为类定义提供的源代码。

已经生成的CBox类定义首先是一条预处理器指令:

  1. #pragma once 

该指令的作用是防止编译器在编译过程中多次将该文件打开并嵌入到源代码中。通常,将在项目的多个文件中嵌入包含给定类定义的头文件,因为每个引用特定类名的文件都需要访问类的定义。这将导致某个头文件的内容有可能在源代码中多次出现。编译过程中出现某个类的多次定义是不允许的,这种情况将标志为错误。在每个头文件的开头部分都放上#pragma once指令,可以确保不出现这种错误。

#pragma once是Microsoft特有的指令,在其他开发环境中可能不支持。如果预计所开发的代码可能需要在其他环境中编译,那么可以在头文件中使用下面的指令形式达到相同的效果:

  1. // Box.h header file  
  2. #ifndef BOX_H  
  3. #defi ne BOX_H  
  4. // Code that must not be included more than once  
  5. // such as the CBox class definition  
  6. #endif  

重要的几行都以粗体显示,它们是任何C++(www.cppentry.com)编译器都支持的指令。只要没有定义符号BOX_H,编译过程中就将嵌入#ifndef指令后面一直到#endif指令之前的所有代码行。#ifndef后面那一行定义了符号BOX_H,从而确保了该头文件中的代码不被第二次嵌入。因此,这种方法与在头文件开始处放置#pragma once指令具有相同的效果。显然,#pragma once指令更简单、更整洁,因此如果只想在Visual C++(www.cppentry.com)开发环境中使用自己的代码,则最好使用该指令。有时, #ifndef/#endif组合可以写成下面这样:

  1. #if !defi ned BOX_H  
  2. #defi ne BOX_H  
  3. // Code that must not be included more than once  
  4. // such as the CBox class definition  
  5. #endif  

Class Wizard生成的Box.cpp文件包含下面的代码:

  1. #include "Box.h"  
  2. CBox::CBox(void)  
  3. {    
  4. }  
  5. CBox::~CBox(void)  
  6. {   
  7. }  

第一行是一条#include预处理器指令,其作用是将Box.h文件的内容(即类定义)嵌入Box.cpp文件中。这是必要的,因为Box.cpp文件中的代码引用了类名CBox,而只有类定义可用时才能确定名称CBox的意义。

添加数据成员

现在可以添加double类型的私有数据成员m_Length、m_Width和m_Height。在Class View中右击CBox,并从弹出菜单中选择Add | Add Variable选项。然后在Add Member Variable Wizard对话框中,我们可以为希望添加到该类的第一个数据成员指定名称、类型和访问特性。

在该对话框中指定新数据成员的方式非常简单。只有定义关联到某控件上的MFC变量时,才给变量应用上下限。如果愿意,可以在下半部分的输入字段中添加注释。当单击Finish按钮时,将在类定义中添加该变量以及提供的注释。我们应该为其他两个类数据成员m_Width和m_Height重复上述过程。之后,Box.h文件中的类定义将修改成如下形式:

  1. #pragma once  
  2. class CBox  
  3. {  
  4. public:  
  5. CBox(void);  
  6. ~CBox(void);  
  7. private:  
  8. double m_Length;  
  9. double m_Width;  
  10. double m_Height;  
  11. };  

如果愿意,那么完全可以在代码中直接手动输入这些成员的声明。我们有权选择是否使用IDE提供的自动功能,也可以手动删除掉自动生成的内容,但不要忘记有时候需要同时修改.h和.cpp文件。手动修改之后最好保存所有文件。

如果查看Box.cpp文件,那么可以看到Wizard已经在构造函数定义中为刚才添加的那些数据成员添加了初始化列表,列表中将各个变量初始化为0。接下来将修改构造函数,以便做我们想做的事情。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇8.9.3 实现CBox类(4) 下一篇8.9.3 实现CBox类(6)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·python数据分析岗的 (2025-12-25 10:02:21)
·python做数据分析需 (2025-12-25 10:02:19)
·成为一个优秀的pytho (2025-12-25 10:02:16)
·Java后端面试实习自 (2025-12-25 09:24:21)
·Java LTS版本有哪些 (2025-12-25 09:24:18)