注册 登录
编程论坛 C++教室

一个很简单的类定义,不知道哪里错了

shenyulv 发布于 2009-12-18 22:15, 488 次点击
class A
{
  public:
  A()
{func();}
virtual void func()=0;//我猜是这里错了。。
};
4 回复
#2
debroa7232009-12-19 13:20
这是个抽象类,从语法上说,并没有错,只是,你是不是写了如下的语句:
A a;
抽象类是不能这样实例化的,这样写会报编译错误。
可以这样用:
A* a;
如果有B 继承了A,并实现了纯虚函数,则有:
B b;
a = &b ;
而且,在A的构造中,不能调用纯虚函数,因为它根本就没有实现代码,是无法调用的。



我看还是让A不要有纯虚函数,写成虚函数就好了,而且要实现它。


[ 本帖最后由 debroa723 于 2009-12-19 13:26 编辑 ]
#3
shenyulv2009-12-20 12:14
我这里已经是全部的代码了,这是考试的一个题目,汗。。没有错误啊?。。
#4
英英2009-12-20 22:19
有错误啊,而且版主已经把问题说得很清楚了,我觉得这个程序的错误就在于A类的构造函数调用了一个纯虚函数,纯虚函数是没有任何实现的,是无法被调用的。你可以考虑把构造函数中纯虚函数的调用去掉 ,或者把纯虚函数改成虚函数,并且一定要实现。我感觉这道试题考察的本质应该就是纯虚函数的使用问题吧

不亏是版主啊 ,问题分析的很透彻

你用vc调试一下应该就知道了吧
#5
shenyulv2009-12-21 13:14
恩,现在理解清楚咯
1