假设需要一个类别库,改类别库共包含以下5个类:GrandFather(祖父类)、Father(父类)、Son(儿子类)、Daughter(女儿类)、GrandSon(孙子类)
各个类之间的继承关系为:
相应的代码为:
class GrandFather
{
};
class Father:public GrandFather
{
};
class Son:public Father
{
};
class Daughter:public Father
{
};
class GrandSon:public Son
{
};
想要让该类别库具备IsKindOf的功能,即能在执行时期侦测某个对象是否“属于某个类别”,并传回TRUE或FALSE。
希望实现如下效果:
GrandFather* pGrandSon = new GrandSon;
cout << pGrandSon->IsKindof(GrandFather); //应该输出1
cout << pGrandSon->IsKindof(Father); //应该输出1
cout << pGrandSon->IsKindof(Son); //应该输出1
cout << pGrandSon->IsKindof(Daughter); //应该输出0
设计思路:
以