首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C+虚函数实现多态性的思考

相信这篇文字已经被这个晦涩的标题直接给PASS了,但笔者想把这些晦涩的概念说的生动些,C++和Python在编程思想上有很多是一致的,比如面向对象的思想,面向对象针对的是”对象”,是数据,而C语言中的面向过程强调的是”算法”,从面向过程到面向对象,是前人从经验教训中得来的完全不同的针对编程的思考方式,一切都是为了代码的稳定性,便于维护。

在C++中,类是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构。类中的虚函数和多态性的实现有着前因后果的关系。在Houdini的HDK文档中很多类成员方法声明语句前有virtual这个单词,这就是所谓的虚函数。

来简单描述虚函数是如何实现多态性的?

就拿CG软件来做个比喻吧,将CG软件比如成一个基类,这个基类有建模,做特效两种类方法,而CG软件有很多,比如Maya,Houdini等,它们是CG软件的子类,继承自CG软件这个基类。假如有一个很牛逼的CG艺术家,能在不同的CG软件中以不同的方式建模,或者做特效。

先来定义一个基类叫CG_Software

虚函数意味着基类希望子类能提供自己的实现代码,但基类也提供了一个缺省的虚函数实现,在子类不复写这个虚函数的情况作为备选方案

有了基类,就可以派生具体的CG软件了,比如Maya类

Houdini类

牛逼的CG艺术家

给我什么软件我就怎么建模

给我什么软件我就怎么做特效

接下来有意思的事情就发生了,来实例化使用这些类

上面的代码演示了最经典的多态性,给Andy不同的软件,Andy会依据不同软件做不同的操作。从虚函数的复写到函数多态性的实现过程。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171227G00T9H00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券