can have done
can have done 通常只用于否定句和疑问句。用于否定句时表否定推断,推测肯定没做;用于疑问句时意为“难道真的做了吗”,表示怀疑。例如:
Can he have done such a foolish thing? (= Is it possible …?)
他会做这样的傻事吗?(表怀疑)
He can't have taken it home.
他不可能把它带回家了。(表不可能)
could have done
could have done 可用于肯定句、疑问句和否定句。用于肯定句既可以表示过去能够做而实际未做,有惋惜、遗憾或委婉批评之意,也可以表示对过去动作的推测;用于否定句和疑问句的情况与can have done相同。例如:
You could have done better, but you didn't try your best.
你本可以做得更好,但是你没有尽力而为。(表惋惜)
This glass is cracked. Someone could have dropped it.
这个玻璃杯破了。可能是谁把它掉在地上了。(表推测过去)
Could he have left the work unfinished?
他会丢下工作不干了?(表怀疑)
He couldn't have checked out so early.
他不可能这么早就离开了。(表不可能)
注意:can't have done 的语气比 couldn't have done 要强一些。例如:
He can't have been to that town.
他根本不可能去过那座城市。(语气略强)
The measurement couldn't have been wrong.
测量不可能出错了吧。(语气稍弱)