have done和have been done都表示的是现在完成时,having done和having been done都是动词ing的完成形式,在句子中作状语,起到补充说明的作用。这里要注意的是,having所接的动词发生的时间在主句中谓语动词发生的时间之前。比如:Having driven all day,we were so tired.这个例子中,having driven表示“我们”的状态,“开了一天的车”,并且drive的动作发生在be tired的之前。
前者having done表示的是主动,后者having been done表示的是被动。例:
1.Having driven all day,we were so tired. 我们开了一天的车,现在都很累了,having driven表示的是主动,是“我们开了一天的车”;
2.Having been criticized today, he was so sad. 今天被批评了,他很难过。是"he"被批评,而这个原因状语又是修饰"he",所以要用被动,have been done。