C++的类与对象

C++由来已久,但是至今为止依然很受大家青睐,在算法实现时尤为被大家认可。尽管很多人认为python易学易用,使用广泛,基本在算法领域是独霸一方。但真正要搞大事情,还得靠C++,而且我们知道其实python底层算法实现基本都是基于C++的,充分体现了效率能力。我们在做算法服务器时通常选择的搭配是Golang + C++。当然也尝试过使用Golang+python或者python独立完成,但效果并没有很太理想,找个时间会分享下后端计算架构上的并发和接口的那些事。

我们先来了解下C++的基本知识,18年前接触C++觉得很神奇,现在依然觉得很神奇。

C是面向过程的语言,C++是面向对象的语言(OOP)。在C里面大家看到的是结构体作为存储数据的单元,执行函数就把这个结构体生成的变量来回传递,或者把这个结构体定位为全局变量进行调用。当代码特别多的时候,就会变的特别难维护,之前用QEMU做恶意程序动态分析的时候,QEMU的代码至今让人印象深刻,想理清一个模块都有点费力。面向对象的提出解决了很多问题,和进程的概念有点类似,会包含数据单元和执行单元。

面向对象的编程会把对象作为程序的基本单元,将数据数据单元和存储单元都封装进去,以提高软件开发的灵活性、可扩展性、高效性及可维护性等等。三大特性包含:封装、继承、多态。通常我们会定义类(class)作为生成对象的模板,其中包含成员变量和成员函数。

封装(Encapsulation)是将抽象得到的数据和行为封装为一个整体,就是将要用到的数据和数据操作进行结合管理。封装可以增强程序的安全性并简化编程,对象的使用者不需要关心内部细节,只需要通过外部接口进行访问得到想要的结果。根据权限(private,protect,public)对于类的成员变量和成员函数进行访问。

多态(Polymorphism)是为了接口重用,统一操作用于不同对象,产生不同的解释,得到不同的执行结果。

编译时多态是通过重载来实现的,对于非虚成员,系统在编译时,根据传递的参数、返回类型等信息决定实现何种操作。

运行时多态是指系统运行时,才能根据实际情况决定实现何种操作,C++中,运行时多态性是通过虚成员实现的。

继承(Inheritance)

猜你喜欢

转载自blog.csdn.net/lwc5411117/article/details/83212196