关于抽象类的实例化

wuleibilly3 2010-07-11 02:21:55
class AbstractBase
{
public:
AbstractBase(){};
virtual void test() = 0;
~AbstractBase() {};
};

class Derive:public AbstractBase
{
public:
Derive(){ AbstractBase::AbstractBase();};
void test() { return;}
~Derive() {};
};

此代码在VS2003下可以编译通过 但是在VS2005下却提示不能实例化抽象类 急需解决办法,,,
...全文
268 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liutengfeigo 2010-07-11
  • 打赏
  • 举报
回复
...........
wuleibilly3 2010-07-11
  • 打赏
  • 举报
回复
问题解决 谢谢大家 结贴了!
baihacker 2010-07-11
  • 打赏
  • 举报
回复
基类有默认构造函数,所以不需要显示提供,否则的话,参考5楼。
对于没有默认构造函数的对象成员,同理。
wuleibilly3 2010-07-11
  • 打赏
  • 举报
回复
谢谢大家的回复 感谢5L 我的意思就要在基类中初始化父类初始化函数中的一些数据。
yunyun1886358 2010-07-11
  • 打赏
  • 举报
回复
#5楼说的对。
这样调用:Derive(){ AbstractBase::AbstractBase();};
是在Derive的构造函数中构造了一个抽象父类的临时对象,抽象类是不能构造对象的。
而这样调用Derive():AbstractBase(){};
是在构造Derive对象的父类对象部分,是合法的。
arong1234 2010-07-11
  • 打赏
  • 举报
回复
我估计你要的是

Derive():AbstractBase(){};
Gohn14174 2010-07-11
  • 打赏
  • 举报
回复
问题很好解决啊、、、
以后我也来问点问题。
tan625747 2010-07-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 baihacker 的回复:]

C/C++ code
AbstractBase::AbstractBase();//这个去掉。
[/Quote]
liao05050075 2010-07-11
  • 打赏
  • 举报
回复
C++抽象类本来就不能实例化。
baihacker 2010-07-11
  • 打赏
  • 举报
回复
AbstractBase::AbstractBase();//这个去掉。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧