隨意在csdn的論壇逛逛,結(jié)果看到有人問一個(gè)關(guān)于虛函數(shù)的問題,看來又是新手要求助了,倒是想看看又虛函數(shù)又問出個(gè)什么花樣。
問題如下:
有對(duì)象A,B,C,其中B是A的派生類,C又是B的派生類;有如下調(diào)用:
A *pA = (A*)pC;//pC是類C對(duì)象指針
pA->Run();
這里,Run是一個(gè)虛函數(shù),在類A中有實(shí)現(xiàn),同時(shí)在類B中又有新的實(shí)現(xiàn),而在類C中沒有實(shí)現(xiàn)。
那么,請(qǐng)問這里pA->Run()調(diào)用的是類A中的Run還是類B中的Run?為什么?
看完就有點(diǎn)失望,不過還是有好心人已經(jīng)回答了這個(gè)沒有創(chuàng)意的問題,提出這樣問題的人是否應(yīng)該反思一下?當(dāng)你有時(shí)間到論壇上打出這么個(gè)問題,是不是可以用一段短小的代碼來調(diào)試一下自己尋求答案呢?在A和B的run函數(shù)里面分別設(shè)置一個(gè)斷點(diǎn),結(jié)果不就出來了么?
所以,我認(rèn)為,程序員還是應(yīng)該有研究精神的,特別是當(dāng)你碰到問題想要解決問題或者尋求答案的時(shí)候,首先要考慮的是自己應(yīng)該如何去研究,而不是一切依賴他人,動(dòng)不動(dòng)就發(fā)問了。從我個(gè)人的觀點(diǎn)出發(fā),就很鄙視提出這種沒有意義的問題的“程序員”,他不配做一個(gè)程序員,更不配做一個(gè)C++的程序員。