编程论坛
注册
登录
编程论坛
→
C++教室
一个很简单的类定义,不知道哪里错了
shenyulv
发布于 2009-12-18 22:15, 488 次点击
class A
{
public:
A()
{func();}
virtual void func()=0;//我猜是这里错了。。
};
4 回复
#2
debroa723
2009-12-19 13:20
这是个抽象类,从语法上说,并没有错,只是,你是不是写了如下的语句:
A a;
抽象类是不能这样实例化的,这样写会报编译错误。
可以这样用:
A* a;
如果有B 继承了A,并实现了纯虚函数,则有:
B b;
a = &b ;
而且,在A的构造中,不能调用纯虚函数,因为它根本就没有实现代码,是无法调用的。
我看还是让A不要有纯虚函数,写成虚函数就好了,而且要实现它。
[
本帖最后由 debroa723 于 2009-12-19 13:26 编辑
]
#3
shenyulv
2009-12-20 12:14
我这里已经是全部的代码了,这是考试的一个题目,汗。。没有错误啊?。。
#4
英英
2009-12-20 22:19
有错误啊,而且版主已经把问题说得很清楚了,我觉得这个程序的错误就在于A类的构造函数调用了一个纯虚函数,纯虚函数是没有任何实现的,是无法被调用的。你可以考虑把构造函数中纯虚函数的调用去掉 ,或者把纯虚函数改成虚函数,并且一定要实现。我感觉这道试题考察的本质应该就是纯虚函数的使用问题吧
不亏是版主啊 ,问题分析的很透彻
你用vc调试一下应该就知道了吧
#5
shenyulv
2009-12-21 13:14
恩,现在理解清楚咯
1