二者都是虚拟语气,区别在于含义的不同。1、should have done意为“过去本应该做某事却未做。”,表达一种责备或内疚的语气。2、could have done意为“过去本能够做某事却未做。”,表示对过去事情的假设。3、could have done还可以表推测一般用在否定句和疑问句中,表示不相信或怀疑的态度。4、表示推测过去某动作发生的可能性时,就表示的可能性程度而言,should 比 could可能性要大。