继承
来源:互联网 发布:阿里云服务器进入 编辑:程序博客网 时间: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