继承

来源:互联网 发布:阿里云服务器进入 编辑:程序博客网 时间:2024/05/15 16:51
#include <iostream>using namespace std;//父类class Object{public:    virtual void show()    {        cout<<"Object show"<<endl;    }};//怪物类class Monster: public Object{    virtual void show()    {        cout<<"Monster show"<<endl;    }};//人类class Person: public Object{public:    int a;//定义一个变量    virtual void show()    {        cout<<"Person show"<<endl;    }};void main(){    Object *pobj[5];//父类的指针,一个数组,每个元素都是1个object指针    pobj[0] = new Monster;//基类的指针指向Monster类    pobj[1] = new Person;//基类的指针指向Person类    pobj[2] = new Monster;//基类的指针指向Monster类    pobj[3] = new Person;//基类的指针指向Person类    pobj[4] = new Monster;//基类的指针指向Monster类    //显示    for(int i = 0;i<5;i++)    {        pobj[i]->show();//调用show(),注意指针对应的都是virtual    }    //如果想调用子类中的变量时,必须做以下强制类的转化。因为指针的数据类型是object类型,    //但是它指向了子类。空间中含有子类变量空间,所以强制转化没有危险    Person pn;    ((Person*)pobj[4])->a=10;    cout<<((Person*)pobj[4])->a<<endl;    cout<<pn.a<<endl;//错误数据}

0 0
原创粉丝点击