对C++多态的一点理解

    作为一个C++新手,我浅谈一下我对多态的一点理解。

    首先,引用几句话:

    1、继承是一种抽象,它允许程序员在某些时候忽略相似对象的差异,又在其他时候利用这些差异。——《C++沉思录》

    2、继承就是为多态服务的。

    3、C++中只有通过指针调用虚函数的时候,才能实现多态。

    4、是父类的指针指向子类,而不是反过来。

  5、多态有助于实现拓展性和替换性。

    接下来看一个例子:

 

假设,父类J最有一个函数(虚函数),名字叫做virtual void Open(“开机”);

子类,D,K,F,X继承了父类J,都拥有了open这个方法,并分别重写这个方法,如下:

电视机:void open(){"开始播放节目"}

风扇:void open(){"开始扇风"}

空调:void open(){"开始制冷"}

洗衣机:void open(){"开始洗衣服"}

实现多态的程序:

J* j = NULL; //声明父类的指针

D d;     //子类创建对象 

F f;      //子类创建对象

K k;     //子类创建对象

X x;     //子类创建对象 

j = &d;        //父类的指针指向子类

//通过父类的指针调用子类对象的函数,也可写成 (*j).open(); 

j ->open(); //调用的是 :{"开始播放节目"}

j = &f;        //父类的指针指向子类

j ->open(); //调用的是 :{"开始扇风"}

j = &k;        //父类的指针指向子类

j ->open(); //调用的是 :{"开始制冷"}

j = &x;        //父类的指针指向子类

j ->open(); //调用的是 :{"开始洗衣服"}

从上面的程序看,同样是j ->open();这么一句话,调用的却是不同的函数,这就是对多态的直观认识!

父类通过其指针指向子类,父类就能调用子类的函数(该函数,是子类继承父类的虚函数而来)。

        可能,读者会说,这多态也没有什么优势啊,我用分别子类不是一样可以调用这些函数吗?

        那么请读者再,回味一下“多态有助于实现拓展性和替换性。”这句话。

        还有“继承是一种抽象,它允许程序员在某些时候忽略相似对象的差异,又在其他时候利用这些差异。”

  这句话。

        希望您看后也有所感悟!

 

 

 

 

posted @   宋桓公  阅读(2059)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示