情态动词 + have done
对过去发生的事做推测、表示后悔或批评。
should have done(本该做却没做)/ can't have done(不可能做过)
要点
- should have done:本应该做但实际上没做,含批评或后悔。
- shouldn't have done:本不该做却做了。
- could have done:本来有能力做却没做。
- must have done:对过去的肯定推测,「一定做过」。
- can't / couldn't have done:对过去的否定推测,「不可能做过」。
- needn't have done:本来不必做却做了。
例句
You should have told me earlier.
你本该早点告诉我。
He must have missed the bus.
他一定是没赶上公交。
She can't have finished it so soon.
她不可能这么快就做完了。
I needn't have bought so much food.
我本来不必买这么多吃的。
She might have taken the wrong bus.
她也许是坐错了公交车。
We could have won, but we gave up too early.
我们本可以赢,只是太早放弃了。
易错提示
- 这类结构一律指「过去」,别和 should do(现在/将来应该做)混在一起。
- 否定加在情态动词后面:shouldn't have done、can't have done。
- might have done 是这一族里语气最弱的:He might have forgotten.(他也许是真忘了)—— 比 could have done 更不确定。
- 阅读里常见的等价说法是 was / were supposed to:You were supposed to call me. = You should have called me.(意思一样、结构不同)