相信这篇文字已经被这个晦涩的标题直接给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会依据不同软件做不同的操作。从虚函数的复写到函数多态性的实现过程。
领取专属 10元无门槛券
私享最新 技术干货