TObject::InheritsFrom - C++ Builder

C++ Builder 参考手册 ➙ System ➙ TObject ➙ InheritsFrom


头文件:#include
命名空间: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(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

你可能感兴趣的:(TObject::InheritsFrom - C++ Builder)