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.