纯虚类的constructor和destructor怎么写?
小弟刚学C++,这两天做design pattern的练习,在这里问个很弱的问题:
为了实现一个Bridge模式的堆栈,写一个StackImp虚类,它有两个实际子类ArrayImp和ListImp,分别实现数组和链表结构的堆栈操作,代码大致如下:
Class StackImp{
public:
StackImp();
~StackImp();
virtual void push(int val);
...
}
Class ArrayImp:public StackImp{
public:
ArrayImp();
...
private:
int _array[];
int _size;
int _cp;
}
...
程序中直接把push、pop的操作传递到StackImp的具体子类中了,
请问作为纯虚类的StackImp的构建函数和析构函数怎么写?
还有StackImp中需要定义private的内容吗?如果要,怎么定义?
问题点数:100、回复次数:5Top
1 楼luohualiushui(落花流水)回复于 2003-06-02 22:53:12 得分 20
Class StackImp{
public:
StackImp();
~StackImp();
virtual void push(int val);
...
}
这不是纯虚类
Class StackImp{
public:
StackImp()=0;
~StackImp()=0;
virtual void push(int val)=0;
...
}
这才是纯虚类
一般没有构造函数
Top
2 楼micropentium6(小笨|曾经的美好)回复于 2003-06-02 23:01:50 得分 20
Class StackImp{
public:
StackImp();
virtual ~StackImp();
virtual void push(int val)=0;
...
}
Top
3 楼lplpzhuzhu(猪猪)回复于 2003-06-03 09:34:14 得分 20
纯虚类有构造函数和析够函数,而且他们的实现方法跟一般的类的一样,可以根据需要随便写。比如,构造函数可以初始化某个东西,析构函数可以释放资源。
纯虚类不能用来定义某个对象,就是说不能实例化,只有继承他的子类才能实例化。
Top
4 楼pzytony(507)回复于 2003-06-03 17:02:20 得分 20
基本来说纯虚函数是必须被重载的,因此在被用来做基类的抽象类中肯定有一个或多个纯虚函数。
而虚函数可以在继承类中被重载,也可以不。
二者都是体现了c++的多态性
Top
5 楼genny(阿健)回复于 2003-06-04 11:27:35 得分 20
析构函数一般要虚拟函数(看书来的);抽象类的构造函数和析构函数不必要进行什么处理吧。
抽象类只是提供接口,定义了private有什么用呢?即使真的要,也是存储某函数的结果,有很大用途嘛?只是增加了内存负担。Top




