为什么抽象类不能创建对象?欢迎讨论

zhangguagua 2003-11-18 06:16:44
rt
...全文
462 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2003-11-19
  • 打赏
  • 举报
回复
“抽象类”就是为了支持面向对象思想中“针对接口编程”(Programming to Interface)的概念。如果你的程序规模较小,用不着,那完全可以像deg936(小可)兄说得那样,别定义抽象类,就定义一般的类。

反过来说,如果可以实例化,那也就不叫抽象类了,就是一般的类而已,没有任何区别了。
北湖春风 2003-11-19
  • 打赏
  • 举报
回复
这是一个设上的问题,而不单纯是语法上的规定。之所以这样是因为,面向对象编程的一种思想,就是面向接口编程。面向接口编程,使你的代码块间具有很小的藕合度,可以使你的代码最大限度的得到重用,也使代码具有可扩展性。当需求发生变化时,可以容易的改变代码。
面向接口编程,是现代软件工程的重要思想。这个在c++中可以由抽象类来实现,在java中则直接就有接口的概念,即interface.当然定义出一套接口是很难的,要有很丰富的经验,和知识。
Paradise2004 2003-11-19
  • 打赏
  • 举报
回复
请参考<effective c++>,你会得到答案的
deg936 2003-11-19
  • 打赏
  • 举报
回复
就是为了使用方便,才弄出个抽象类,如果你要实例化,那就不要把它定义成抽象类嘛。

就好像一个复杂的东西,为了帮我们理解,先弄一个最基本的特征出来。但是如果你要让它能概括一切,就必须往上面添东西,而根本没有必要先产生一个无用的东西出来。
Bandry 2003-11-19
  • 打赏
  • 举报
回复
比如说一个形状类,它应该是一个抽象类,因为如果你创建这个类的实例,别人包括你自己根本就不知道这个类实例是什么东西(什么形状?正方、长方、三角),因此创建它的实例根本就没有任何意义。所以规定抽象类不能创建实例。

这样说不知道行不行?
wshcdr 2003-11-19
  • 打赏
  • 举报
回复
这个是C++的规定
如果要问什么

恐怕不是一两本书可以解决的

这个问题好比
为什么水在常态下是液体

实在是很难回答

sharkhuang 2003-11-19
  • 打赏
  • 举报
回复
要是里面有不是virtul的东西,是可以创建的!但是那就是纯虚礼函数了哦!

Meyer 2003-11-19
  • 打赏
  • 举报
回复
想过头了吧,
就当他是法律了。
qufan 2003-11-18
  • 打赏
  • 举报
回复
小弟我的理解是:要成一个对象一定要分配空间的吧
具体到类的一般成员函数是怎么在内存中存在的我不是很清楚
但是在讲到静态成员函数的差异性的时候,我觉得形成对象的时候应该有一个函数的拷贝吧


zhangguagua 2003-11-18
  • 打赏
  • 举报
回复
ninjaiking(卷土重来)
回答的好生动呀,感谢感谢。
ninjaiking 2003-11-18
  • 打赏
  • 举报
回复
比如说对于我们人类,从中可以区分中国人,美国人等,中国人还可以分为汉族与其他少数民族.一个人,必然属于世界上的某个国家和某个民族.
人类就好比一个抽象类,是我们创造的一个高度抽象的概念,并不存在人类本身的实例.
他的唯一用途就是被继承,产生一个可以实在存在的人.
zhangguagua 2003-11-18
  • 打赏
  • 举报
回复
小弟不才,应该是看了不少书了,还是不解,为什么不让创建对象。麻烦大哥给说说,谢谢
lemon520 2003-11-18
  • 打赏
  • 举报
回复
多看书就知道了!
zhangguagua 2003-11-18
  • 打赏
  • 举报
回复
我的意思是,为什么要这么规定,如果抽象类能建立对象,对实现接口,多态,我看也没有什么阻碍嘛。
cuistar 2003-11-18
  • 打赏
  • 举报
回复
就像抽象类中的虚函数必须是纯虚函数
cuistar 2003-11-18
  • 打赏
  • 举报
回复
这还用说阿?规定
zhangguagua 2003-11-18
  • 打赏
  • 举报
回复
up

64,318

社区成员

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

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