★could have done可以表示“过去本来能够做某事而实际上没有做”。如：
i could have come here a little earlier, but i'm late because of the bad traffic.
★must have done表示对过去已经发生过的情况的肯定推测，语气较强。如：
she must have received the book; i sent it a month ago.
★may / might have done表示对已经发生过的情况的肯定推测，语气稍弱。might have done还可表示“本可能做某事而实际上没有做”。如：
she didn't come on time. she may / might have missed the bus.
he might have given you more help, but he was very busy then.
★should / ought to have done表示“本该做某事而实际上没有做”，其否定形式表示“本不该做某事而实际上做了”，通常含有责备的意思。如：
the flowers have died. i should / ought to have watered them often.
you shouldn't / ought not to have told them the truth.
★needn't have done表示“本不必做某事而实际上做了”。如：
it is warm today. you needn't have worn your coat.
注意：didn't need to do与needn't have done都表示“过去不必做某事”，但didn't need to do通常表示“没必要做，实际上也没做某事”，而needn't have done则表示“虽然没必要做，但已经做了某事”。如：
he didn't need to get up early on sunday, so he stayed in bed until 10 am.
it's only five minutes'walk. we needn't have taken a taxi.
【即学即练】用“情态动词+ have done”结构完成下列句子。
1. you ________ (wash) the wound with cold water, but you used hot water.
2. i am not feeling well in the stomach. i ________ (eat) so much just now.
3. there was enough time. you ________ (hurry).
4. i ________ (lend) you the money. why didn't you ask me?
5. they ________ (go) out because the light's out.
1. should / ought to have washed
2. shouldn't / ought not to have eaten
3. needn't have hurried
4. could / might have lent
5. must have gone