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