should have done .would have done. must have done三者之间的意思和用法上有什么区别?

问题描述:

should have done .would have done. must have done三者之间的意思和用法上有什么区别?

这三个主要用了不同的情态动词,意思完全不一样。
should have done 这本应该做某事结果却没做
would have done 指应该做某事,是对过去的一种推测
must have done 指对过去的一种肯定推测,一定做过某事

should have done = It's necessary that you did sth but you didn't.
表达“后悔、责备”:本应当做的(但实际上没有去做);
would have done = It's possible that you did sth but you didn't.
基于虚拟的假设,会发生的后果(但实际没有发生):就会……(但没有)
If you hadn't done sth, you would have done sth.
must have done.= I'm sure that you did sth
对过去的肯定推测:你肯定……/ 我断定你……

1.should/ought to have done的含义.“should/ought to have+过去分词”表示“过去应该做谋事却没有做”; “should not/ought not to have+过去分词”表示“作了不应该做的事”.含有责备或遗憾的意思.例如:
You shouldn’t /oughtn’t to have come here alone at such a late hour.你这么晚的时候本不一该一个人来这里的.(实际是一个人来的)
She should/ought to have gone there alone.她本该一个人去那里的.(实际上不是) 
2.would have done的含义.would have done“本愿意做某事”,非虚拟语气时,就是would 情态动词加动词原形,
have done 就是现在完成时,所以和起来 就是将来完成时的用法
过去将来完成时表示在过去看来将来某时会已经完成的动作.例如:
She said she’d have finished her exams by then.她说那时她会已经考完试了.
He knew he arrived she would have gone home.他知道他到时她会已经回家了
3.must have done的含义.“must have+过去分词”表示对过去的推测,意思是“一定已经,想必已经,准是已经….”,只用于肯定句中.例如:
He must have been drinking beer.他肯定一直喝啤酒来着.
若要表示否定,要用“can’t/couldn’t+ have+过去分词”,意思是“不可能”:
The money can’t have been lost there.钱不可能是在那儿丢的.
should have done“本应该做某事”
might have done“可能做过某事”
could have done“本可以做到某事”
would have done“本愿意做某事”
都是表示与过去事实相反.if条件句中的虚拟基本含义相同,只是要注意主从句时态一致