注意:本文中代碼均使用 Qt 開發編譯環境
#include <QCoreApplication>
#include <QDebug>
class B0 {
public:
virtual void display(){
qDebug() << "B0::display()";
}
};
class B1:public B0 {
public:
void display(){
qDebug() << "B1::display()";
}
};
class D1:public B1 {
public:
void display(){
qDebug() << "D1::display()";
}
};
void fun(B0* ptr){
if(NULL != ptr){
ptr->display();
}
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
B0 b0;//聲明基類對象
B0 *p = NULL;//聲明基類指針
B1 b1;//聲明派生類對象
D1 d1;
p = &b0;
fun(p);//調用基類成員
p = &b1;
fun(p);//調用派生類成員
p = &d1;
fun(p);//調用派生類成員
return a.exec();
}
運行結果:
B0::display()
B1::display()
D1::display()
大家可以參照運行結果去體會和理解