should、would、could、need+have done时,肯定形式下的意思,都是情态动词的本意,加上还没做的事;否定形式下的意思,都是情态动词的本意,加上已经做了的事。详细请看:
情态动词+have+done
一、“must+have+done”表示对过去事情的肯定推测,译成“一定做过某事”,该结构只用于肯定句.
You must have been mad to speak to the servant.你和仆人说话,一定是发疯了。
二、“can't+have+done”表示对过去事情的否定推测,译成“不可能做过某事”.
Mary can't have stolen your money. She has gone home.玛丽不可能偷你的钱,她回家去了。
三、“can+have+done”表示对过去行为的怀疑,用于疑问句,译成“可能做过……吗?”
There is no light in the room. Can they have gone out?屋里没有灯,他们可能出去了吗?
四、“could+have+done”是虚拟语气,表示对过去事情的假设,意思是本来能够做某事而没有做.
He could have passed the exam, but he was too careless.本来他能够通过考试,但是他太粗心。
五、“may+have+done”表示对发生过的事情的推测,意思是“可能已经”或“也许已经”,用于肯定句中.
—What has happened to George?
—I don't know. He may have got lost.
—乔治发生了什么事?
——我不知道,他可能迷路了。
六、“might+have+done”表示对过去事情的推测,might与may意思相同,但可能性更小.多用于虚拟语气结构中.
He might have given you more help, even though he was busy.他或许会多给你一些帮助,即使他很忙。
七、“would+have+done”虚拟语气,表示对过去事情的假设,意思是“本来会做”。
Without your help, I wouldn't have achieved so much.没有你的帮助,我是不会取得如此大的成绩。
八、“should+have+done”意思是“本来应该做某事,而实际做.”“shouldn't+have+done”表示本来不应该做某事,而实际做了.含有指责对方或自责的含意.
Look, Tom is crying. I shouldn't have been so harsh on him.看,汤姆哭了,我本来不应该对他如此严厉。
九、“ought to+have+done”表示过去应该做而实际并没有做,译成“理应做……”,往往表示遗憾.与“should+have+done”用法基本一样.
I ought to have gone home last Sunday.我理应上星期日回家。
十、“need+have+done”表示本来需要做某事而没有做.“needn't+have+done”则表示“本来不需要做某事而做了”.
I needn't have bought so much wine—only five people came.我本来没有必要买这么多酒,只来了五个人。