现在完成时
句型:have/has+过去分词
现在完成时表示动作发生在过去,但与现在有关系,即用一个发生在过去的动作来说明现在的情况。

虚拟句
这次只探讨对过去情况的虚拟句,其句型为would/could/should/might have done。

区别
现在完成时里所发生的事情都是真实的,并且时间点在现在。
而虚拟句指不能实现或纯假想的情况,可以对过去、现在或将来进行假想。虚拟语气的本质就是对根本不可能的情况发生假设。

例句对比
(1)
I have caught the bus because you helped me. 因为你的帮助我赶上了车。
If it had not been for your help yesterday, I could not have caught the bus. 如果昨天没有你的帮助,我不会赶上公交车。(事实是你昨天已经帮助了我,所以我赶上了车)

(2)
We have done something. 我们做了些什么。
If we had realized that we would have done differently. 如果我们早意识到这一点的话,我们的做法就会完全不同。(事实上没及时意识到。)

(4)
He has been away from the city. 他已离开这个城市。
If he had known the news, he would have stayed here. 如果他知道了那个新闻,他便会留下来。(事实上他不知道那个新闻,没留下来)

(5)
He hasn't finished his work. 他没把工作做完。
If he had realized the importance of the work, he would have finished his work. 如果他意识到了这个工作的重要性,他就会把工作做完了。(事实上没意识到,没做完。)