关于c++抽象类的问题 10

1、抽象类为什么不能被实例化?2、抽象类既然不能被实例化,为什么还有构造、析构函数?3、纯抽象类是否有构造、析构函数?为什么?4、纯抽象类中能不能写除纯虚函数外其他的成员... 1、抽象类为什么不能被实例化?
2、抽象类既然不能被实例化,为什么还有构造、析构函数?
3、纯抽象类是否有构造、析构函数?为什么?
4、纯抽象类中能不能写除纯虚函数外其他的成员函数或成员变量?
展开
 我来答
金色潜鸟
2012-07-06 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5667万
展开全部
C++ 里设计了 “抽象类”目的是用作类似类的“基类”,给派生出的类 同类性质的东西 有同样的名字,但有不同的计算实现的方法。
例如,抽象类 叫 平面图形,它有成员函数:面积计算,周长计算,派生出的类,非抽象类:椭圆类,矩形类,三角形类等。
抽象类 作为 基类 里 面积计算,周长计算 都是 虚函数。
椭圆类,矩形类,三角形类 里 这些 虚函数 都要 重新写成 具体的 计算函数。
使用中就方便了。面积 就调 Area(), 周长 就调 Perimeter().
抽象类为什么不能被实例化 -- 语法规定不能被实例化,因为它是抽象的概念性的,没有实际意义的,里面的 虚函数 等待 重写,没实用价值。
构造、析构函数 -- 只是提供一个名字,所有派生类都可继承使用。
纯抽象类可以有构造、析构函数。
抽象类中可以有 非抽象 的 成员 变量和 函数,供 派生类 继承 使用 也可改写。
Bk0X
2012-07-05 · TA获得超过9413个赞
知道小有建树答主
回答量:1217
采纳率:60%
帮助的人:667万
展开全部
1、抽象类为什么不能被实例化?
语法之所以不允许抽象类实例化是因为这不符合人类的常识, 动物园有老虎狮子大象, 它们都属于"哺乳动物", 但是世界上并不是真的有"哺乳动物"这种动物, 它仅仅是人类为了分类动物而创造的"抽象概念", 并不真实存在, 因此不可以实例化..

2、抽象类既然不能被实例化,为什么还有构造、析构函数?
前面说了, 语法不允许实例化抽象类是因为不符合人类思维常识, 但是由于继承规则它必须要定义构造函数和析构函数(或者隐式定义), 这是为了提供给派生类调用的, (基类构造函数是派生类构造函数的一部分)

3、纯抽象类是否有构造、析构函数?为什么?
这个问题同上.

4、纯抽象类中能不能写除纯虚函数外其他成员函数或成员变量?
当然可以, 比如说所有的"哺乳动物"都有 DNA, 都有血液和骨骼, 这些所有哺乳动物共有的部分就是虚基类的成员变量, 所有哺乳动物共有的行为(吃饭, 拉便便)都是基类的成员函数, 只不过有些成员函数是纯虚函数, 有些则是一般的虚函数.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wrx91
2012-07-06 · 超过18用户采纳过TA的回答
知道答主
回答量:125
采纳率:0%
帮助的人:67.9万
展开全部
C++ 里设计了 “抽象类”目的是用作类似类的“基类”,给派生出的类 同类性质的东西 有同样的名字,但有不同的计算实现的方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式