在 C 中,确定作为参数传递的对象的类型对于处理多态类及其派生类至关重要。当一个函数重写另一个接受基类对象的函数,但重写函数需要访问仅在派生类中可用的特定函数时,就会出现这种情况。
要解决此问题,可以使用dynamic_cast 进行强制转换将对象从基类类型转换为派生类类型,允许您检查该对象是否属于所需的派生类。
TYPE& dynamic_cast<TYPE&> (object); TYPE* dynamic_cast<TYPE*> (object);
Dynamic_cast 执行运行时检查来验证演员阵容的有效性。如果转换为与实际对象类型不匹配的类型的指针或引用,则结果将分别为 NULL 或抛出 bad_cast 异常。
需要注意的是,dynamic_cast 需要基类至少有一个虚函数才能正常运行。这是因为运行时类型信息 (RTTI) 仅适用于多态类。实际上,大多数基类已经有一个虚拟析构函数,以允许派生类对象在从基指针中删除时正确清理。
以上是如何识别传递给 C 函数的对象类型?的详细内容。更多信息请关注PHP中文网其他相关文章!