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

问题描述:

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

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条件句中的虚拟基本含义相同,只是要注意主从句时态一致