多态的覆盖(重写)

来源:互联网 发布:淘宝寄修手机靠谱吗 编辑:程序博客网 时间:2024/06/01 09:02

且看代码。

#include<iostream>using namespace std;class A{public: void SHOW()      {         cout<<"1"<<endl;    }       void PRINT()      {          cout<<"2"<<endl;    }  };class B:public A{public:  void SHOW()      {         cout<<"3"<<endl;    }       void PRINT()      {          cout<<"4"<<endl;    }  };int main(){ A* P=new A(); P->SHOW(); P->PRINT(); delete P; cout<<endl; B* PP=new B(); PP->SHOW(); PP->PRINT(); delete PP; cout<<endl; //但很多时候会出现这样的东东。 A* PPP=new B();//基类指针指向子类对象 PPP->SHOW(); PPP->PRINT(); delete PPP;return 0;}


我们发现第三种情况的输出和第一种情况是一样的,那么第三种写法有什么作用呢?且看代码。

#include<iostream>using namespace std;class A{public: void SHOW()      {         cout<<"1"<<endl;    }     virtual  void PRINT()      {          cout<<"2"<<endl;    }  };class B:public A{public:  void SHOW()      {         cout<<"3"<<endl;    }       void PRINT()      {          cout<<"4"<<endl;    }  };int main(){ A* P=new A(); P->SHOW(); P->PRINT(); delete P; cout<<endl; B* PP=new B(); PP->SHOW(); PP->PRINT(); delete PP; cout<<endl; //但很多时候会出现这样的东东。 A* PPP=new B();//基类指针指向子类对象 PPP->SHOW(); PPP->PRINT(); delete PPP;return 0;}

只是将基类 PRINT函数设为虚函数,那么结果呢?


这样结果就变了。为什么呢?这就是多态的一个简单应用。

多态具体指什么呢?

 一句话来说,多态是指允许子类类型的指针赋值给父类类型的指针。c++多态性是通过虚函数来实现的,而子类重新定义父类虚函数的做法,叫做覆盖或重写。覆盖指子类重新定义了基类的虚函数,函数名相同,参数相同;重载指子类重新定义了基类的函数,函数名相同,参数不相同(参数类型、参数个数)。上面的例子就是覆盖。

有人如是说:多态的覆盖主要是靠关键字virtual来实现的,这个关键字代表了一种叫“延迟绑定”的技术,当你用一个基类的指针或者引用来指向一个对象的时候,编译器在编译阶段是不知道绑定的对象是基类对象还是派生类对象的,直到运行期间才得知的。

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信登录版本最低登录不上怎么办 所录微课的视频声音小是怎么办 电脑开机黑屏只有光标在闪怎么办 联想家悦重装系统时驱动缺失怎么办 ps做到一半电脑重启了怎么办 宝宝起风疹怎么办 要注意的问题 惠普笔记本刚换的显卡又坏了怎么办 电脑装驱动时不注意点了跳过怎么办 刚抱回来的小猫不吃饭怎么办 三年级小孩字认的太少怎么办 孩子写字手出汗怎么办用什么笔壳 墙壁被小孩用彩色笔画花了怎么办 传图识字里有些字识别不了怎么办 一岁四个月宝宝智力发育迟缓怎么办 小打架受伤对方家长不配合怎么办 宝宝要上幼儿园了家长该怎么办 断奶涨奶怎么办又能防止乳房变形 孩子在幼儿园被小朋友打了怎么办 孩子在幼儿园被小朋友咬了怎么办 孩子被同学打了家长该怎么办? 孩子把同学打了打人家长该怎么办 孩子和同学发生矛盾家长该怎么办 孩子同学给孩子要东西家长该怎么办 如果遇到不讲理的孩子和家长怎么办 孩子调皮又被老师留校了怎么办 孩子拼音f和sh发音不清怎么办 自己在家生的孩子怎么办出生证明 在家念地藏经招来众生不走怎么办 家是济宁孩子上学想在济南上怎么办 高一孩子成绩严重下滑家长怎么办 商铺租客不交租金又不搬走怎么办 考试试卷找不到了明天要交怎么办 8个月宝宝不爱吃蔬菜泥怎么办 5个月的宝宝拉肚怎么办 一岁宝宝大便拉不出来怎么办 八个月宝宝便秘拉不出来怎么办 10个月宝宝大便拉水怎么办 4个月的孩子大便拉水怎么办 五个多月宝宝大便拉水怎么办 七个月宝宝大便还没成行怎么办 宝宝一岁了还没长牙怎么办