在C++中,若基类Base无虚函数,派生类Derived新增了成员函数func()。现有Base* pb指向Derived对象。以下哪种方式能正确调用Derived::func()?

答案解析

核心考点:C++类型转换的语义差异及多态条件。 解题思路:因Base无虚函数,dynamic_cast需要基类有虚函数表,故B错误。static_cast在无继承关系的类型间转换可能未定义,但此处存在继承关系,A的强制转换语法正确。reinterpret_cast会重新解释二进制但违反类型安全,C错误。const_cast仅处理常量性,D无关。 选项分析:A正确,因继承关系存在且语法合法。B因缺少虚函数无法进行动态类型检查。C违反类型安全。D不涉及常量修改。易错点:误认为dynamic_cast总能处理继承转换,忽略其依赖虚函数的条件。
正确答案:A
随机推荐
开始刷题