老是忘记类的继承特性,把测试代码和结果记下来
#include <iostream>
#include <QDebug>
#include <QList>
using namespace std;
class ParentA
{
public:
virtual void ptFun(){printf("class ParentA call!\n");}
};
class ChildB : public ParentA
{
public:
void ptFun(){ printf("class ChildB call!\n"); }
};
class ChildC : public ParentA
{
public:
void ptFun(){ printf("class ChildC call!\n");}
};
int main()
{
qDebug("***********正常打印*************");
ParentA* a1 = new ParentA;
ChildB* b1 = new ChildB;
ChildC* c1 = new ChildC;
a1->ptFun();b1->ptFun();c1->ptFun();
qDebug("***********强制转换成基类打印*****************");
ParentA* a2 = (ParentA*)(b1);
a2->ptFun();
ChildB* b2 = (ChildB*)(a1);
b2->ptFun();
qDebug("***********都加入到基类的链表,再打印**********");
QList<ParentA*> aList;
aList.append(a1);
aList.append(b1);
aList.append(c1);
aList[0]->ptFun();aList[1]->ptFun();aList[2]->ptFun();
return 0;
}