1.情态动词+have done的构成
may/might have done可能已经发生了某事
could have done本能够做某事
can't/couldn’t have done不可能已经发生了某事
must have done一定已经发生了某事
would have done本来会做某事
should/ought to have done本应该做某事但没有做
shouldn't/oughtn't to have done本不应该做某事但做了
need have done本需要做某事但没有做
needn't have done 本不需要做某事但做了
2.情态动词+have done的用法
情态动词+have done的用法主要包括两个方面:一.表示对过去所发生事情的推测或假设;二.表示对过去所发生事情的责备或遗憾。
①may/might have done可能已经发生了某事。对过去所发生动作的不太肯定的推测。用于肯定句中,may和might意思相同,但might可能性更小,多用于虚拟语气中。
By expressing love for his children in such a special way, Tolkien may indeed have been the real Father Christmas. 通过这种特别的方式表达对孩子们的爱,托尔金可能真的是真正的圣诞老人。(新外研版必修二)
You can check his office. He might have been there already. 你可以去他的办公室看看。他可能已经到那儿了。
If he had been given more encouragement, he might have made greater progress. 如果给他更多的鼓励,他可能会取得更大的进步。(与过去事实相反的虚拟语气)
②can/could have done本能够做某事,can have done用于疑问句,表示对过去所发生事情的怀疑。could have done用于虚拟语气,表示对过去事情的假设,本来能够做某事但没有做。
There was no one in the house. Where can he have gone? 房子里一个人也没有。他会去哪里呢?
If he had worked harder, he could have passed the exam. 如果他再努力一点,他就能通过考试了。(与过去事实相反的虚拟语气)
③can't /couldn't have done不可能已经发生了某事,表示对过去所发生的事情的否定推测,否定语气较强。couldn't have done比can't have done语气委婉一些。
He couldn't have left for Shanghai, for I just saw him on the street. 他不可能去上海了,因为我刚刚在街上看见他了。
④must have done一定已经发生了某事,只用于肯定句中,表示对过去所发生的事情的最肯定的推测,与can't /couldn't have done相对,表示不可能已经发生了某事。
The street was wet, so it must have rainedlast night. 街道是湿的,所以昨晚一定下雨了。
The children must have been very excited as they opened it. 孩子们打开它的时候一定很兴奋。(新外研版必修二)
⑤would have done本来会做某事,用于虚拟语气中,表示对过去所发生的事情的假设。
I would have gone to Beijing yesterday, but I had something urgent to do. 我本来昨天要去北京的,但我有急事要做。
⑥should/ought to have done本应该做某事但没有做,表示对对方的指责或自责。用于肯定句和疑问句中。也可以表示可能性较小的推测。
You should have arrived on time yesterday. 你昨天应该准时到达的。
You ought to have told me about it earlier. 你应该早点告诉我这件事。
I ought to have finished the work last week. 我本应该上周就完成这项工作的。
The new teaching building should have been completed by the end of this term. 新教学楼应在本学期末完工。
⑦shouldn't/oughtn't to have done本不应该做某事但实际做了,表示对对方的指责或自责。
You shouldn't have watched the football so late last night. 昨天晚上你不应该看足球赛看得那么晚。
You oughtn't to have blamed him too much. 你不应该过分责备他。
⑧need have done表示本需要做某事但没有做;needn't have done 表示本不需要做某事但做了。
You need have got up early, in which case you wouldn’t have missed the train. 你本来需要早点起床,那样你就不会误了火车。
You needn't have come so early, for the meeting has been postponed for two hours. 你没必要来这么早,因为会议已经推迟了两个小时。