C++ Builder 参考手册 ➙ System ➙ TObject ➙ InheritsFrom
头文件:#include <systobj.h>
命名空间:System
函数原型:
__classmethod bool __fastcall InheritsFrom(TClass AClass);
System::TObject::InheritsFrom 是 System::TObject 的成员函数,当前对象的类是否从 AClass 继承过来的。
参数:
AClass:类
返回值:
如果 AClass 是这个类本身,这个类的父类、父类的父类,…… 一直到顶级父类,返回都为真,否则返回假。
- 通过父类指针调用的 InheritsFrom 方法,执行的是子类的,即这个指针指向的实际的类的方法;
- C++ 程序也可以使用 dynamic_cast 判断,和 InheritsFrom 的判断结果相同。
例:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(Sender->InheritsFrom(__classid(TWinControl)))
{
ShowMessage(L"InheritsFrom: Sender 是从 TWinControl 继承而来的");
}
else
{
ShowMessage(L"InheritsFrom: Sender 不是从 TWinControl 继承而来的");
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(dynamic_cast<TWinControl *>(Sender))
{
ShowMessage(L"dynamic_cast: Sender 是从 TWinControl 继承而来的");
}
else
{
ShowMessage(L"dynamic_cast: Sender 不是从 TWinControl 继承而来的");
}
}
运行结果:
点击 Button1 用 InheritsFrom 判断的运行结果
点击 Button2 用 dynamic_cast 判断的运行结果
参考:
- System::TObject::ClassParent
- System::TObject::ClassName
- System::TObject::ClassNameIs
- System::TObject::QualifiedClassName
- System::TObject::UnitName
- System::TObject::UnitScope
- System::TObject::ClassInfo
- System::TObject::ClassType
- System::TObject
- VCL 类继承关系
C++ Builder 参考手册 ➙ System ➙ TObject ➙ InheritsFrom