设为首页 加入收藏

TOP

8.9.3 实现CBox类(6)
2013-10-07 16:10:13 来源: 作者: 【 】 浏览:89
Tags:8.9.3 实现 CBox

8.9.3  实现CBox类(6)

定义构造函数

需要修改类定义中无参数构造函数的声明,从而使其包含带默认值的参数,修改后的原型如下:

  1. explicit CBox(double lv = 1.0, double wv = 1.0, double hv = 1.0); 

现在,可以实现该函数。打开Box.cpp文件-- 如果尚未打开的话,将构造函数的定义修改成如下形式:
 

  1. CBox::CBox(double lv, double wv, double hv) : m_Height(hv)  
  2. {  
  3. if(lv < 0.0 || wv < 0.0 || hv < 0.0)  
  4. throw “Negative dimension specified for CBox object.”;  
  5. m_Length = std::max(lv, wv);  
  6. m_Width = std::min(lv, wv);  
  7. // Length is now greater than or equal to width  
  8. if(m_Height > m_Length)  
  9. {  
  10. m_Height = m_Length;  
  11. m_Length = hv;  
  12. // m_Height is still greater than m_Width so swap them  
  13. double temp = m_Width;  
  14. m_Width = m_Height;  
  15. m_Height = temp;  
  16. }  
  17. else if( m_Height > m_Width)  
  18. {  
  19. m_Height = m_Width;  
  20. m_Width = hv;  
  21. }  
  22. }  

记住,成员函数形参的初始化列表只应该出现在类定义的成员声明中,而非函数的定义中。如果将它们放在函数定义中,则不能编译代码。前面曾经介绍过这里的代码,因此不再讨论。需要为algorithm头文件添加一个#include指令,以访问max()和min()函数。此刻最好单击Save工具栏按钮保存文件。应该养成在切换到其他窗口之前,保存所编辑文件的习惯。如果需要再次编辑构造函数,那么通过在Class View选项卡底下的窗格中双击相应的项目,或者从代码显示窗格右上角的下拉菜单中选中该函数,即可轻松地使之再次出现在屏幕上。

在Class View窗格中单击类名可以把类的成员显示在下部的窗格中。还可以通过在Class View窗格中右击相应的名称,并从出现的上下文菜单中选择适当的菜单项,直接进入.cpp文件中某个成员函数的定义或.h文件中该函数的声明。

添加函数成员

现在需要给CBox类添加前面看到的所有函数。此前,在类定义内部定义了一些函数成员,因此这些函数将自动成为内联函数。如前所述,首先为utility头文件添加一个#include指令以访问Box.h,再为std::rel_ops名称空间添加一个using指令为一些比较运算符提供模板。为了把operator<()添加为内联函数,在Class View窗格中右击CBox,并从上下文菜单中选择Add | Add Function菜单项,然后就可以在显示的对话框中输入定义函数的数据,该对话框如图8-10所示。

Return Type和Parameter Type下拉列表包含一组有限范围的类型。如果需要的类型没有出现在列表中,只需手工输入它们。图8-10显示了输入定义函数的数据之后、添加形参之前的对话框。必须添加Add按钮,才能添加形参。接着形参就显示在对话框右边的形参列表中。如果没有选中Inline,该函数原型就出现在类定义中,并把一个函数框架添加到Box.cpp文件中。还必须在CBox类定义中编辑声明,使该函数声明为const,再给函数体添加实现代码。现在它应如下所示:

  1. // Less-than operator for CBox objects  
  2. bool CBox::operator<(const CBox& aBox) const  
  3. {  
  4. return Volume() < aBox.Volume();  
  5. }  

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

评论

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

·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)