3个问题,详细阐述,每个50分.(150分)

  • 主题发起人 主题发起人 卷起千堆雪tyn
  • 开始时间 开始时间

卷起千堆雪tyn

Unregistered / Unconfirmed
GUEST, unregistred user!
1.队列和栈的区别

2.操作系统中一个进程正在运行,另一个进程抢占 问前一个进程是处于什么状态:运行态,就绪态, 阻塞态

3.C++中的虚函数是个什么概念?是否是多态性?
 
1、队列和栈的区别 :对于数据的处理方式不一样
队列属于先进先出
栈则属于后进显出
2、我对操作系统不太熟
3、c++没有学过
我昨天受刺激打算去学学
 
1.队列是先进先出(FIFO),栈是后进先出(LIFO),当只有一个元素时,队列与栈是一回事
2.就绪。阻塞态是却少某些资源是才进入的,就绪态是不没得到CPU
3.虚函数与多态没什么必然关系,虚函数只是定义了子孙可以有一些动作行为
 
1.队列是先进先出(FIFO),栈是后进先出(LIFO),当只有一个元素时,队列与栈是一回事
2.运行。对于已经运行的进程,即使在某一时刻没有占用CPU,它也是处于运行状态。你可以查查资料
3.虚函数定义其继类的某些属性或方法。不是多态性,它是多态性的扩展。
 
我答(3)
设计虚函数基本上基于这样的考虑:
你的这个类要被别的子类来继承,但是每个子类的某种行为的实现方法不一样,这个时候
你可以在父类里面用虚函数来定义这个行为,而具体在各个子类里面可以实现那些具体不
同的行为. 也正是如此,基本上虚函数都是和多态联系在一起的,以便程序在运行的时候动
态梆定,选择执行正确的行为.
举列子来说,你设计一个基类Shape,你考虑到会有Rectangle和Circle从这个基类派生.
考虑到Rectangle和Circle都应该有draw的能力,而且她们的draw的实现有所不同(显然,
一个画圆,一个画方),这个时候,基于多态的考虑(比如你可以通过用指向基类Shape的指
针来操作Circle和Rectangle对象),你就应该在Shape里面设计一个draw的虚函数.

我这里讲的是c++的概念,Delphi也有类似的东东,具体实现我有些不记得了,回头再去看看
手册.
 
卷起千堆雪tyn你不是科班的吧:)

1.队列和栈的区别
; 队列和栈都是一种数据结构
; 队列是 ;先进先出
; 栈是 ; ;后进先出

2.操作系统中一个进程正在运行,另一个进程抢占 问前一个进程是处于什么状态:运行态,就绪态, 阻塞态
; 不能确定,可能是 就绪态 也可能是 阻塞态

; 就绪态 拥有运行需要的所有资源(除了CPU) :) 是不是要学孔明呢
; 阻塞态 除了CPU外,还有某些独占资源没有得到
; 运行态 就不多说了

3.C++中的虚函数是个什么概念?是否是多态性?
; ;虚函数 不是 多态性
; ;我的理解是:
; ; ;虚函数: 根据不同的调用者来调用不同的函数(这些函数有相同的申明,
; ; ; ; ; ; ; 这种情况出现在继承中,通过V_TABLE实现)
; ; ;多态性: 多个函数的名字相同但是参数不同(个数,类型。。)
; ; ; ; ; ; ; 根据不同的参数调用相应的函数
 
3.虚函数是了解多态的关键,实际上多态是靠虚函数来完成的。
如对交通工具来说:
设一个基类vehicle,它有一个函数drive,
类car继承自vehicle,
类bicycle继承自vehicle,
但是它们的drive方式各自不同。因此各自需要改写drive函数。
如果将drive设成虚函数则你可以用一个基类的指针来调用它实际指向的对象的drive函数;
vehicle *pv;
car *pcar=new car();
pv=pcar;
pv->drive();//实际调用的是car的drive,但如果drive不是虚函数,调用的就是vehicle的drive了
bicycle *pb=new bicycle();
pv=pb;
pv->drive(); ;//这次调用的是bicycle的drive
//以相同的指令唤起不同的函数,这种性质就是多态。
 
精彩!!![^]
 
yxyyyy已经答得很完整了
 
前面两点yxyyyy已答完了,但第三点与我的理解有所不同:
在我的理解中,C++中的虚函数是用来实现多态性的一种技术。
多态的基本思想是,用户调用一个对象方法,并将其应用于一个变量,但具体调用哪一个
方法将依赖与变量相关的对象类型。--- Marco Cantu <Delphi4从入门到精通>
 
1.“队”比较好理解一点,就象我们日常排队买东西一样,先来先买。
; “栈”实际上可以理解成一个弹匣。我想你应该是看到过电影里装子弹的镜头。可以想象
一下,在一个弹匣中的子弹,总是先压进去的子弹在下面,后压进去的子弹在上面,所以在
射击的时候,后压进去的子弹是被先打出去的。如果打了一半子弹,或没有打完,又往弹匣
里面装了一发子弹,那么下一次开枪时,这发子弹将被第一个打出去,而不是原来剩下的子
弹。
; ; 为什么举弹匣的例子,是因为“压”子弹和子弹从弹匣内出去可以比较形象的理解成
“栈”的两个操作:PUSH、POP,即进栈、出栈。
; ; 再回来说“队”,很显然,“栈”的出口和入口是在一起的,“队”是在两头。出入队
的操作也叫PUSH、POP,但队的POP是先进先出的
 
1 队列是先进先出,栈是后进先出。这是数据结构的基础知识啊!
2 运行态!
3 虚函数不是多态性!
 
后退
顶部