按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
其结果是不确定的。还有,由于抽象类的析构函数可以被声
明为纯虚函数,这时,我们应该至少提供该析构函数的一个
实现。一个很好的实现方式是的抽象类中提供一个默认的析
构函数,该析构函数保证至少有析构函数的一个实现存在。
如下面的例子所示:
…………………………………………………………Page 108……………………………………………………………
class classname
{
// 其它成员
public:
~classname()=0
{
// 在此添加析构函数的代码
}
};
由于派生类的析构函数不可能和抽象类的析构函数同名,因
此,提供一个默认的析构函数的实现是完全必要的。这也是
纯虚析构函数和其它纯虚成员函数的一个最大的不同之处。
一般情况下,抽象类的析构函数是有派生类的实现对象释放
时由派生类的析构函数隐含的所调用的。
第五节 ClassView和WizardBar
Visual C++在Microsoft Developer Studio中提供了几个工
具来使用得创建和组织类非常的方便。这些工具包括
ClassView、WizardBar和ClassWizard 。其中ClassWizard只
能用于基于MFC应用程序,因此我们将在以后的部分中讲述它
的使用,在本节中,只涉及了ClassView和WizardBar中的部
分内容。
2。5。1 使用ClassView
使用ClassView可以完成以下工作:
n 向工程中添加新类
n 向类中添加成员函数和成员变量
n 重载基类中的虚函数
n 添加消息处理程序
n 跳转到类或成员的定义
…………………………………………………………Page 109……………………………………………………………
n 跳转到类或成员的引用
n 显示派生类或基类的图形
n 将类添加到Gallery中以便以后重用
n 在成员函数中设置断点
n 使用访问类型组织类的成员
n 向接口中添加属性和方法
n 向ActiveX控件添加事件
n 在工程空间中创建新的文件夹
n 察看类及其成员的属性
图2。 7 工程ClassViewDemo的ClassView窗格
…………………………………………………………Page 110……………………………………………………………
图2。8 新建类的对话框
为了进行下面的示例,首先创建一个空的Win32 Console
Application工程,这里,我们假定工程名为
ClassViewDemo,当然,你也可以使用其它的工程名。
在Workspace窗口中打开ClassView窗格,如图2。7所示。下面
我们使用ClassView向工程中添加一个类Creature。方法如
下:
1。 右击ClassViewDemo classes节点,选择New Class命令,
出现如图2。8的对话框。
2。 在Name处输入新的类名,确认在Class Type中选择了
Generic Class,对于Win32 Console Application,这也是
唯一可用的选项。
3。 如果需要,可以在下面的Base class(es)中选择类
Creature的基类和继承方式。这里,我们不需要为类
Creature指定基类。
4。 单击File name处的Change按钮改变类的头文件和实现文
件为creature。h和creature。cpp。
5。 最后,单击OK完成。
这时,Visual C++自动生成了下面的两个文件:
creature。h:
// creature。h: interface for the Creature class。
//
//////////////////////////////////////////////////////////////////////
#if !defined
(AFX_CREATURE_H__90147538_FA97_11D1_BBF0_0000B4810A31__INCLUDED_)
#define AFX_CREATURE_H__90147538_FA97_11D1_BBF0_0000B4810A31__INCLUDED_
#if _MSC_VER 》= 1000
#pragma once
#endif // _MSC_VER 》= 1000
…………………………………………………………Page 111……………………………………………………………
class Creature
{
public:
Creature();
virtual ~Creature();
};
#endif // !defined
(AFX_CREATURE_H__90147538_FA97_11D1_BBF0_0000B4810A31__INCLUDED_)
creature。cpp:
// creature。cpp: implementation of the Creature class。
//
//////////////////////////////////////////////////////////////////////
#include 〃〃
#include 〃creature。h〃
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Creature::Creature()
{
}
Creature::~Creature()
{
}
这里,我们需要删掉creature。cpp文件中的
#include 〃〃
一行。
…………………………………………………………Page 112……………………………………………………………
在上面的过程中,还 自动生成的类Creature的构造函数和析
构函数的框架,并且,其析构函数还被声明为虚函数。
下面的步骤添加类Creature的成员函数KindOf:
1。 在ClassView中右击类Creature,选择Add Member
Function,弹出如图所示的对话框。
图2。9 添加成员函数
2。 在Function Type处输入char *。然后在对话框下方选择
Virtual复选框,这导致Static复选框不可用,因为同一个成
员函数不可能既是虚函数,又是静态函数,这时,在
Function Declaration处自动添加上了virtual关键字。确认
在Access处选择了Public,然后,在Function Declaration
处输入函数名KindOf,单击OK完成。
双击ClassView中的KindOf,Microsoft Developer Studio将
打开文件creature。cpp,将将插入点定位到函数KindOf的定
义处。在此添加下面的代码:
char* Creature::KindOf()
{
return 〃Creature〃;
}
下面以类似的方式生成类Animal,使其基类为Creature,继
承方式为public。并将其头文件改为animal。h,实现文件改
为animal。cpp。同样,在animal。cpp中删除
#include 〃〃
一行。
…………………………………………………………Page 113……………………………………………………………
对于MFC应用程序,还可以使用ClassView来重载基类中的虚
函数,这将在本书后面的章节中讲述。而对于非MFC应用程
序,我们仍可以使用上面的添加成员函数的方法来重载基类
中的虚函数,只不过这时必须手动的给出虚函数的返回类型
和参数列表。
使用上面的方法来生成为Animal的重载虚函数KindOf,其代
码已在上一节中给出。
然后再新添加一个C++ Source File——main。cpp,并在其中
定义程序的主函数main()。
由于我们 目前还没有接确到MFC编程,因此,现在还不能讲解
ClassView的某此用法。在本书后面的章节中,我们将会在用
到这些功能的时候讲解它们。
2。5。2 使用WizardBar
WizardBar是Microsoft Developer Studio中的一个工具条,
如图2。10所示。它提供了对ClassView和ClassWizard (关于
ClassWizard的使用将在后面的章节中讲述)中的命令的快速
访问。