C++几个问题问题,解释一下

理解多态性的概念,任选下面4个问题中的2个回答。a)多态性如何使你能够进行“通用化”编程而不是“特殊化”编程?试说明“通用化”编程的主要优点。b)请讨论switch(包括... 理解多态性的概念,任选下面4个问题中的2个回答。
a) 多态性如何使你能够进行“通用化”编程而不是“特殊化”编程?试说明“通用化”编程的主要优点。
b) 请讨论switch(包括if.. else)逻辑编程存在的问题,解释多态性可以继承代替switch逻辑的主要原因。
c) 请说出动态绑定和静态绑定的不同之处,并解释virtual函数在动态绑定中的用法。
d) 请查阅相关资料,说明动态绑定的底层实现。(虚函数表)
展开
 我来答
时间片轮转算法
2011-05-12 · TA获得超过1660个赞
知道小有建树答主
回答量:809
采纳率:0%
帮助的人:602万
展开全部
·a,多态的体现之一就是虚函数,也就是在父类中定义的虚函数,由子类来实现,相当于为所有的子类设置了一个上层接口,所有的子类必须要通用这一个行为,就打个比方
class 人{
virtual void 吃饭(五谷杂粮 食物){};
}
在这里定义了一个虚函数,那么所有的老人、小孩、妇女儿童、男人之类的凡是属于人这个概念的子类,都得实现“吃饭”这个动作,而不是吃屎之类的动作,这就体现了“通用化”。所谓不能“特殊化”就是说你实现“吃饭”这个动作,要传入一个参数——五谷杂粮,但是你不能传入其他的——例如:屎、人肉之类的类型,否则会报错。这就是不能“特殊化”。当然多态还有诸如函数的重载、函数的隐藏,多多少少也是反映这个。
·b,动态绑定,编译时绑定,通过对象调用。是属于C++的动态多态性。静态绑定,运行时绑定,通过地址实现,是C++的静态多态性。下面是例子。
/************************************************************************
* 动态绑定与静态绑定的用法
************************************************************************/
#include <iostream.h>
class CBase
{
public:
virtual int func() const //虚函数
{
cout<<"CBase function! ";
return 100;
}
};
class CDerive : public CBase
{
public:
int func() const //在派生类中重新定义虚函数
{
cout<<"CDerive function! ";
return 200;
}
};

void main()
{
CDerive obj1;
CBase* p1=&obj1;
CBase& p2=obj1;
CBase obj2;

obj1.func(); //静态绑定:调用对象本身(派生类CDerive对象)的 func 函数
p1->func(); //动态绑定:调用被引用对象所属类(派生类CDerive)的 func 函数
p2.func(); //动态绑定:调用被引用对象所属类(派生类CDerive)的 func 函数
obj2.func(); //静态绑定:调用对象本身(基类CBase对象)的函数
}
你就憋在心里
2011-05-12
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
cao,这不是C++的作业题么,你还是好好的做吧,不要辜负老师啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式