linux c和c++哪个适合工作者学习

linux c和c++哪个适合工作者学习,第1张

如果纯碎是业余爱好,可以先学c,再学c++. 并且先学习标准c,然后学习linux,然后学习gnu c.

原因是

1. c的语法精简. 容易上手, 时间成本低.

2. c算是c++的一个子集.

3. 大部分语言语法都是类c语法学会了c对学其他语言有帮助.

而且你强调从事机械行业和linux,我猜你是有想法的人, linux驱动,module,嵌入式.用c开发比较好.

如果是想凭借语言找工作,还是去培训吧,没有系统的学习路径,就跟蒙眼爬山一样.

一、面向过程概念

面向过程是一种以过程为中心的编程思想,面向过程编程是基于“冯·诺依曼”模型的。在这种模型中,程序与变量一起存储,程序中包含一系列指令,并把这些指令以函数的方式组织起来。

特性

自顶向下、逐步求精、模块化

优点

性能比面向对象高,因为类调用需要实例化,开销比较大,比较消耗资源。

如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,因为在它们看来性能是最重要的因素。

缺点

没有面向对象易维护、易复用、易扩展

(按照面向过程的思想,在解决问题时,各函数之间是为了这个问题服务;而面向对象的思想,则是站在提出问题的主体的角度去解决问题,可将解决这一具体问题的步骤,抽象为解决这一类问题的方法,以后再遇到类似的问题,可以复用解决思路)

二、面向对象概念

面向对象是按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的方法。通过面向对象的理念,将计算机软件系统能与现实世界中的系统一一对应。

特性

封装、继承、多态、抽象

优点

易维护、易复用、易扩展(在解释面向过程的缺点是有对面向对象的优点进行解释)

缺点

性能比面向过程低(同上)

可以通过以下方法实现面向对象:

1、封装

封装就是把数据和方法打包到一个类里面。其实C语言编程者应该都已经接触过了,C 标准库 中的 fopen(), fclose(), fread(), fwrite()等函数的 *** 作对象就是 FILE。

数据内容就是 FILE,数据的读写 *** 作就是 fread()、fwrite(),fopen() 类比于构造函数,fclose() 就是析构函数。

2、继承

继承就是基于现有的一个类去定义一个新类,这样有助于重用代码,更好的组织代码。在 C 语言里面,去实现单继承也非常简单,只要把基类放到继承类的第一个数据成员的位置就行了。

例如,我们现在要创建一个 Rectangle 类,我们只要继承 Shape 类已经存在的属性和 *** 作,再添加不同于 Shape 的属性和 *** 作到 Rectangle 中。

3、多态 C++

语言实现多态就是使用虚函数。在 C 语言里面,也可以实现多态。 现在,我们又要增加一个圆形,并且在 Shape 要扩展功能,我们要增加 area() 和 draw() 函数。

但是 Shape 相当于抽象类,不知道怎么去计算自己的面积,更不知道怎么去画出来自己。而且,矩形和圆形的面积计算方式和几何图像也是不一样的。

4、虚表和虚指针

虚表(Virtual Table)是这个类所有虚函数的函数指针的集合。

虚指针(Virtual Pointer)是一个指向虚表的指针。这个虚指针必须存在于每个对象实例中,会被所有子类继承。

5、在构造函数中设置vptr

在每一个对象实例中,vptr 必须被初始化指向其 vtbl。最好的初始化位置就是在类的构造函数中。

事实上,在构造函数中,C++ 编译器隐式的创建了一个初始化的vptr。在 C 语言里面, 我们必须显示的初始化vptr。下面就展示一下,在 Shape 的构造函数里面,如何去初始化这个 vptr。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8156381.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存