情态动词+have done 是一种虚拟语气,和情态动词+动词原形的区别是:用原型表示事情发生在现在或将来,而用have done ,表示事情发生在过去。
例如,You must be tired now。(你现在一定很累)
You must have seen the film。(你一定看过这部电影)指的是你过去一定看过。
考试常考这么几种:
must have done (过去)一定做过某事
It must have rained last night。(昨晚一定下雨了)
cann't have done (过去)一定没有做过某事
He cann't have seen the film,because he doesn's know anying about it。(他一定没看过那部电影,因为他对它一无所知)
注意:千万不能用mustn't ,因为它是“禁止,绝不可以”的意思
could have done (过去)本来可以做成某事实际上却没有
I could have succeeded in the game if I hadn't have a cold。(如果我没感冒的话,我可能已经在比赛中成功了)
should have done (过去)应该做某事而没有做
You should have cleaned your room yesterday。(你昨天就应该把屋子打扫了)而实际上却没有
这个用法来自虚拟语气,表示与事实情态相反,而结构中的虚拟动词表示具体意思,举例
1.SHOULD 表示应该做,因此should have done就表示应该做而没有做
2.COULD 表示能够做,因此could have done就表示有能力做而没有做
其他依次类推,但要注意的是must have done 表示的意思不同,意思是"对过去行为的一种猜测",举例
the ground is wet, so it must have rained
地湿了,一定是刚才下过雨了
上几楼已回答很完善
他是情态动词表猜测的过去式 you must have done...可能性为100%
may have done是50% might have done更低一些
他们的否定形式都是can't have done
should have done 表示一种虚拟语气,就是说这件事并未发生,但你应该这么做 如: you should have helped him yesterday.