聊聊C++的多态

来源:互联网 发布:滑窗的方法 数据分析 编辑:程序博客网 时间:2024/06/07 03:39

什么是多态
如果有几个上似而不完全相同的对象,有时人们要求在向它们发出同一个消息 时, 它们的反应各不相同,分别执行不同的操作。这种情况就是多态现象。

例如:武大女神,北大女神,人大女神,她们都有相同属性和行为,她们正分别和男友一起在清华大学的小树林学习.突然她们的男友同时叫:老婆,你快过来..她们会分别走到不同的男友面前.而不是你…

  C++中所谓的多态(polymorphism)是指,由继承而产生的相关的不同的类,其对象 对同一消息会作出不同的响应。   多态性是面向对象程序设计的一个重要特征,能增加程序的灵活性。可以减轻 系统 升级,维护,调试的工作量和复杂度. 

赋值兼容(多态实现的前提)
赋值兼容规则是指在需要基类对象的任何地方都可以使用公有派生类的 对象来替代。赋值兼容是一种默认行为,不需要任何的显示的转化步骤。   

赋值兼容规则中所指的替代包括以下的情况:

 ︎1.派生类的对象可以赋值给基类对象.
2.派生类的对象可以初始化基类的引用。
3.派生类对象的地址可以赋给指向基类的指针。 

在替代之后,派生类对象就可以作为基类的对象使用,但只能使用从基类继承的成员。 

#include <iostream>  using namespace std;     class Parent     {       public:      Parent(int a)    {       this-­‐>a =  a;     cout<<"Parent       a"<<a<<endl;    }     void  print()   //⼦子类的和⽗父类的函数名字⼀一样          {   cout<<"Parent   打印      a:"<<a<<endl;   }     private:        int a;     };   class Child:publicParent       {       public:   Child(int b) :Parent(10)       {     this-­‐>b=b;        cout<<"Child b"<<b<<endl;     }   void print()        {   cout<<"Child打印 b:"<<b<<endl;    }   private:    int b;       };   void      howToPrint(Parent   *base)       {  base-­‐>print();    //⼀一种调⽤用语句      有多种表现形态...       }    void howToPrint2(Parent &base)   {      base.print();  }  int main(void)  {  Parent*base=NULL;   Parent p1(20);  Child c1(30);  base =&p1;  base-­‐>print();    //执⾏行⽗父类的打印函数   base= &c1;  /*      编译器认为最安全的做法是编译到⽗父类的print函数,     因为⽗父类和⼦子类肯定都有相同的print函数。    */  base-­‐>print();    //执⾏行谁的函数  ?    //貌似我们希望之星Child的print函数  Parent &base2=    p1;  base2.print();  //执⾏行⽗父类的打印函数   Parent &base3 =   c1;   base3.print();  //执⾏行谁的函数?  //函数调用  howToPrint(&p1);  howToPrint(&c1);    howToPrint2(p1);    howToPrint2(c1);    return 0;    }    
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩总是写错字怎么办 孩子马虎不认真怎么办 小孩计算老出错怎么办 小学生计算总出错怎么办 高中考试总粗心怎么办 孩子考试总是粗心怎么办 一年级孩子考试粗心怎么办 老师说孩子粗心怎么办 计算题总出错怎么办 计算题总是出错怎么办 数学老是计算错误怎么办? 苗木抵扣计算错误怎么办 表格中计算错误怎么办 孩子电视瘾太大怎么办 孩子考试前失眠怎么办 孩子上网瘾了怎么办 孩子考试差家长怎么办 手指肿痛有脓包怎么办 手指脓出来红肿怎么办 手指提重物发麻怎么办 小孩拧伤了怎么办 从小就成绩差怎么办 孩子考试总马虎怎么办 上课不认真怎么办初中 对学习兴趣不大怎么办 小学生做作业粗心大意怎么办 小学生考试总是粗心大意怎么办 脚趾内侧长鸡眼怎么办 五岁宝宝胆小怎么办 孩子偏食挑食老师怎么办 九岁孩没有耐心怎么办 孩子学习太粗心怎么办 害怕自己变疯怎么办 工作太粗心了怎么办 粗心的宝宝该怎么办 孩子身上起范怎么办 又笨又内向怎么办 学生做试卷马虎怎么办 小孩子学习态度不好怎么办 孩子学习态度差怎么办 小孩学习态度不好怎么办