安徽省懷遠一中 王玉峰
解讀“情態動詞+have done”結構
安徽省懷遠一中王玉峰

請同學們先看下面教材里的典型句子,認真體會斜體部分的用法:
1.In the past,if someone like me had failed to get into university through the college exam,he would have had no chance of getting a degree.(北師大版教材模塊五Unit15 Lesson1 P36)
2.I know that I wasn't a willing student and I shouldn't have been so difficult at school,but it was probably because I lacked confidence in myself.(北師大版教材模塊五Unit15 Lesson3 P40)
3.It was a dilemma because the footballer could have demanded damages if we were wrong.(人教課標版教材模塊五Unit4 P26)
從上述三個句子可以看出“情態動詞+have done”結構既可以用來表示與過去事實相反的情況,也可以表示對已經發生的事情的推測、責怪、后悔、遺憾等。要注意每一個情態動詞都含有相應的說話者的語氣,所以我們既要了解每個情態動詞的基本用法,又要體會說話者的語氣。接下來我們逐個解析。
(一)must have done
情態動詞must+have done只用于肯定句中,表示對過去發生的事情或狀態進行肯定的推測,意為“過去一定做過某事”。如:
It must have rained last night,for the road is all wet.
昨天晚上一定是下雨了,因為路還濕著。
【例】—Hurry up,Michael!It's ten to three.
—Goodness me!The class_______have begun.I'll be late again.
【答案與解析】must。從Goodness me!“天哪”的驚呼可以看出對開始上課的肯定推測,推測上課的動作必定已經發生。句意是:肯定開始上課了。
(二)can't/couldn't have done
表示對過去發生的事情或狀態的否定的推測,用can't have done/couldn't have done,意為“過去不可能做過,肯定沒做過”,與must have done正好相反。can/could表示推測也可以用在疑問句中。如:
I can't remember when we went to Beijing but could it have been sometime last autumn?
我不記得我們什么時候去過北京,會不會是去年秋天的某個時候?
【例】—Where can Margaret have put the empty bottles?
—She can't_______(throw)them away.They must be somewhere.
【答案與解析】have thrown。根據問句的can have put看出是對過去的事實進行推測,所以答句的否定句是can't have done結構。
(三)may/might+have done
情態動詞may/might+have done表示對已發生的動作或存在的狀態進行不確定的推測,might語氣稍弱一點兒,只能用于肯定句和否定句中,表示“過去可能做過某事或過去可能沒做過某事”。如:
You might/may(not)have read about it in the newspapers.
你可能在報上已經看過(還沒有看過)這個消息。
【例】—I left my handbag on the train,but luckily someone gave it to a railway official.(改編自2011年江蘇卷)
—How unbelievable to get it back!I mean,someone might_______(steal)it.
【答案與解析】have stolen。根據包都找回來了,看出推測某人把包偷去的可能性顯得就很小了,根據gave看出所推測的steal動作應該發生在過去,所以用might have done結構。
(一)should/shouldn't(ought to/oughtn't to)have done
表示過去應該做而(實際)沒有做的事情,含有責備或遺憾的語氣,意為“本應該……”;其否定形式為“should not have done/ought not to have done”,表示某種行為不該發生卻發生了。如:
You should have known better than to go mountain climbing alone.
你本來不該笨得單獨去爬山。
You oughtn't to have crossed the road when the lights were red.
你不該在紅燈時過馬路。
【例】—I'm sorry for being late.I______(shall phone)you earlier.(改編自2012年陜西卷)
—That's all right.I've just arrived.
【答案與解析】should have phoned。根據前句的道歉和earlier可知phone本來該早點發生的,用should have done結構表示自責。
【例】He oughtn't_______(tell)me your secret,but he meant no harm.
【答案與解析】to have told。根據后面的過去式謂語動詞meant可知tell動作應該已經發生,再根據轉折詞but可以看出是“本來不該告訴”的意思,情態動詞ought后跟不定式to,所以用to have told。
(二)could have done
could have done表示“過去本來能夠做某事,但實際上沒有做”。如:
He could have passed the exam,but he was too careless.
本來他能夠通過考試,但是他太粗心。
【例】Jerrydidnotregretgivingthecommentbutfeltthathe______(canexpress)itdifferently.
【答案與解析】could have expressed。根據前一分句的過去式謂語動詞和轉折詞but看出是“本來可以用不同的方式表達”,用could have done結構。
(三)needn't have done
表示過去沒有必要做某事,但實際上做了某事。注意情態動詞need不用于肯定句,僅用于疑問句和否定句。如:
I needn't have bought so much wine—only five people came.
我本來沒有必要買這么多酒,只來了五個人。
【例】The weather turned out to be fine yesterday.I needn't_______(take)the trouble tocarry my umbrella with me.
【答案與解析】have taken。根據yesterday和fine的提示看出是“本來沒有必要帶傘”,事實上昨天卻帶了傘,用needn't have done結構。
【例】 I needn't_______(worry)before I came to the new school,for my classmates here are very friendly to me.(改編自2015年天津卷)
【答案與解析】have worried。根據for的解釋“在這里我的同學對我非常友好”看出擔心是沒有必要的,現在不擔心了,所以用needn't have done表示本來沒有必要做某事。
(四)daren't have done
情態動詞dare用于疑問句或者否定句中,不用于肯定句,該結構表示“過去不敢做某事”。
He daren't have left without your permission.當時沒有你的許可我是不敢離開的。
用于虛擬語氣中的情態動詞用其過去式形式,不定式用其完成時表示過去。在主從復合句中,該結構用于主句中。意思是“本來……,事實上卻……”。如:
【例】—If the traffic hadn't been so heavy,I_______(can be)back by 6 o'clock.
—What a pity!Tina was here to see you.
【答案與解析】could have been。if從句hadn't been是表示與過去事實相反的虛擬語氣,根據括號提示從句用could have done。句意:我本來6點之前能夠回來的,可是交通太擁堵了。
【例】If I hadn't seen it with my own eyes,I_______(will not believe)it.
【答案與解析】wouldn't have believed。根據前半句If I hadn't seen...可以判斷是對過去的虛擬。所以主句是wouldn't have done的形式。句意:如果不是我親眼看到,我不會相信。
【例】It_______(may save)me some trouble had I known the schedule.
【答案與解析】might have saved。if虛擬條件句中含有had時,可將if省去,同時將had提前構成部分倒裝結構,由此可以看出是表示與過去事實相反的虛擬語氣。所以主句用might have done結構。句意是:如果我早知道日程安排,可能會省去我一些麻煩。
【例】—Sorry,Mum!I failed the job interview again.
—Oh,it's too bad.You(shall make)full preparations.
【答案與解析】should have made。根據前句“又一次面試沒有通過”看出母親說的是“你應該做好充分準備的”,表示母親的責怪,用should have done結構。