最近刚刚开始学C++,有了一点感慨,写在这里。错误之处,恳请大侠们不吝指正。
早就听人说不会c++不是真正的程序员。虽然此话说的有点绝对,但我觉得还是有一定的道理。
c++这门语言是我接触的第一个面向对象的编程语言,它对我编程时的思维方式产生了巨大的冲击,可以说带来了思想上的一场革命。
以前学习过C语言,它是一门面向过程的语言,在用它进行编程的时候,我们考虑的往往是过程的开始和结束的时候计算机的状态应该是什么样的,然后去考虑如何编码来实现它。这种方式在做一些小东西的时候或许还可以应付,然而如果问题稍微一复杂,解决起来可能就会出现很多问题。在c++里面,我们所考虑的不再是一个一个具体的过程,而是对象(object)。虽然只是一个小小的改变,但我认为它可以大大的简化我们的设计,编码以及维护工作。
首先,它用面向对象的思想将我们从事物与事物之间错综复杂的关系中解放出来。这是一种既智慧又优雅的解决方案。以前用C进行编程的时候(其实我代码写的也不多),我总是会不知不觉陷入各种困境,最常见的一种就是遇到问题不知道如何开始,找不到突破口,因为自己很容易陷入各种事物的错综复杂的关系之中不能自拔。然而,用c++就不容易陷入这种困境。因为它已经告诉了我们where to start,那就是object。世界是由各种各样的object组成的,用object来作为我们思考问题的基本单元似乎更加合情合理。我觉得它是对面向过程的一种抽象,抽象的层次高了,我们思考问题也就更容易了。在数字电路的设计里面,我们会遇到这样的问题,就是抽象的层次越高,受到的约束也就越大,灵活性降低。但我觉得把object作为基本单元不会带来灵活性上的损失,毕竟everything is object。
其次,面向对象是一种优雅的解决方案。世界是由objects组成的,object可以用两种东西来描述,一是状态信息,二是状态的变化规律。在c++中,状态信息我们用各种属性(变量)来表示;变化规律则用各种function来描述。这样,现实中的事物就被映射到我们的虚拟世界里面(其实也是现实世界中的事物)。