类A虚函数f()返回1,类B继承A并重写f()返回2。代码:A* pa = new B(); B* pb = dynamic_cast<B*>(pa); cout << pa->f() << pb->f(); 输出为:
答案解析
核心考点:虚函数动态绑定与dynamic_cast的作用。
解题思路:pa指向B对象,虚函数调用pa->f()动态绑定到B::f()返回2。pb是B*,直接调用B::f()返回2。输出22。
选项分析:A正确,两次调用均触发多态。B/C/D误以为cast影响虚表行为,实则cast仅改变指针类型,不改变对象虚函数表。易错点:混淆类型转换与多态机制,误认为dynamic_cast会重置虚表。
正确答案:A