随意在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++的程序员。