4.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.
5.needn''t have done表示“本不必做某事而实际上做了”。如:
It is warm today. You needn''t have worn your coat.
6.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.