抽象类为何能够实例化对象?

ewuby 2008-09-16 10:20:40
比如存在一类定义:
class CSample
{
public:
CSample(){};
virtual ~CSample(){};
virtual void output(char *str) = 0; //纯虚函数

protected:
static CLogger *m_pInstance; //CSample实例
};

由于含有纯虚函数output(),因此类CSample是个抽象类,理论上纯虚类不能进行对象实例化,但为何此类定义中实例化了m_pInstance(难道static原因?),希望大家指点,谢谢!
...全文
173 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ewuby 2008-09-16
  • 打赏
  • 举报
回复
已经明白,谢谢大家~
blackcat242 2008-09-16
  • 打赏
  • 举报
回复
那个是这个指针啊,不是示例,只有指针new了后,才是实例
flight_lcf 2008-09-16
  • 打赏
  • 举报
回复
虚函数可以根据自己的需要,决定是否需要重写。
纯虚函数必须重写
lann64 2008-09-16
  • 打赏
  • 举报
回复
可以重写,也可以不写,不写的话子类还是虚类
ewuby 2008-09-16
  • 打赏
  • 举报
回复
不好意思确实笔误,更正:static CSample *m_pInstance; //CSample实例
另外再请教个问题:子类继承了基类,那么子类需要继承重写所有基类的虚函数、传虚函数吗?

[Quote=引用 3 楼 whuyotc 的回复:]
static CLogger *m_pInstance; //CSample实例

这个是不是你的笔误啊
static CSample *m_pInstance; //CSample实例
[/Quote]
flight_lcf 2008-09-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wangdeqie 的回复:]
是CSample不能实例化对象,不是CLogger不能实例化对象
[/Quote]

开始理解错了,感觉2楼是LZ迷惑的地方。

在抽象类中可以实例化其他类,但抽象类(CSample)不能实例化对象。
不过,一般抽象类的一般只是定义函数。
zgjxwl 2008-09-16
  • 打赏
  • 举报
回复
是两个类啊,要么就是一个对象指针了
lann64 2008-09-16
  • 打赏
  • 举报
回复
哪里有实例化呀?没看到。
whuyotc 2008-09-16
  • 打赏
  • 举报
回复
static CLogger *m_pInstance; //CSample实例

这个是不是你的笔误啊
static CSample *m_pInstance; //CSample实例

这个是不是不应该叫实例啊
这里只是定义了一个对象指针啊


[Quote=引用楼主 ewuby 的帖子:]
比如存在一类定义:
class CSample
{
public:
CSample(){};
virtual ~CSample(){};
virtual void output(char *str) = 0; //纯虚函数

protected:
static CLogger *m_pInstance; //CSample实例
};

由于含有纯虚函数output(),因此类CSample是个抽象类,理论上纯虚类不能进行对象实例化,但为何此类定义中实例化了m_pInstance(难道static原因?),希望大家指点,谢谢!
[/Quote]
wangdeqie 2008-09-16
  • 打赏
  • 举报
回复
是CSample不能实例化对象,不是CLogger不能实例化对象
flight_lcf 2008-09-16
  • 打赏
  • 举报
回复
和static没有关系。
定义指针的时候是没有问题的。
CSample m_sample;//不可以。
CSample* m_pSample;//这样可以。

64,654

社区成员

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

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