都是对过去的虚拟.
couldn't have done...表否定推测,“不可能做过某事”.
She can't / couldn't have gone to bed,for the light in her room is still on.她不可能上床睡觉了,因为她房间的灯还亮着.
could have done
表示客观上“本来能做某事但实际上没做”.
He could have finished the work in time but he didn't work hard.他本来可以按时干完活的,但他没有卖力.