随着互联网及互联网+深入蓬勃的发展,经过40余年的时间洗礼,C/C++俨然已成为一门贵族语言,出色的性能使之成为高级语言中的性能王者。而在今天,它又扮演着什么样重要的角色呢?请往下看:

后端服务器,移动互联网后端,经典Windows界面开发,移动互联网端界面开发,跨平台界面开发,图形分析,系统架构,应用设计,还有现在最为流行的分布架构等一些新的技术领域。

这么牛的语言,你是不是想知道怎样学习和掌握它呢?接下来请看经过小编整理过C/C++工程师必备知识的思维导图。笔者是一个C/C++出身的程序员,学习编程有什么学习问题或者关于C/C++学习的路线的话可以私信我交流。

初学者看到这么密集的知识点,是不是有点眼晕呢?的确,C/C++是一门知识面覆盖很广的学科。想学好C/C++的你并不需要慌张,内容虽多,但依然有法可依。只要有足够的耐心和毅力,加上正确的学习方法,就不怕你学不好C/C++。

既然如此,C/C++开发到底需要学些什么呢,又应该怎么学呢?笔者是一个C/C++出身的程序员,学习编程有什么学习问题或者关于C/C++学习的路线的话可以私信我交流。

一、初级入门阶段

在入门之初,首先要做的是通过C/C++语言的学习培养编程思维和动手能力,深刻理解面向过程和面向对象的思想方法。这个阶段你需要学习:

① C语言

数据类型、变量、内存布局、指针基础;

字符串、一维数组、二维数组;

一级指针,二级指针,三级指针,N级指针概念,指针数组和数组指针;

结构体、文件的使用;

动态库的封装和设计;

函数指针回调函数。

② C++语言

面向对象编程思想;

类的封装,构造和析构、静态成员、对象管理;

类的构造(有参构造函数、无参构造、拷贝构造、默认构造函数)和析构;

对象动态管理、友元函数、友元类、操作符重载;

C++编译器对象管理模型分析;

类对象的动态管理(new/delete);

友元函数和友元类;

运算符重载(一元运算符、二元运算符、运算符重载难点、项目开发中的运算符重载);

类的继承、多继承及其二义性、虚继承;

多态(概念、意义、原理剖析、多态案例);

虚函数、纯虚函数、抽象类(面向抽象类编程思想案例);

函数模板、类模板,模板的继承;

C++类型转换;

C++输入输出流(标准I/O 文件I/O 字符流I/O);

C++异常处理(异常机制、异常类型、异常变量、异常层次结构、标准异常库);

③ 常见常用的IDE开发工具

诸如Windows平台VC系列:VC++6.0(比较古老) ;Visual Studio2013, Visual Studio2015;Mac平台的XCode系列,还有CodeBlock,另附一些高级编辑器Notepad++, EditPlus,UE等一些开发工具的常用设置和一些常见快捷键的使用。

此阶段的学习难度系数不大,掌握这些内容之后,可以做些简单的小项目。当然了如果你想用这些技能找工作的话确实是比较困难的。这时你还应该在加把劲进一步学习第二阶段。

二、C/C++开发进阶

这一阶段的目标才是达到C/C++软件工程师开发行业的基本要求,这个阶段是我们走向C/C++开发的进阶之路,更是一个让自己找份薪水比较体面的工作的筹码。

如果在此部分遇到不懂的或者没有见过的知识点和名词,可先将本文收藏,供以后细细研读。

那么这个阶段,我们又应该掌握什么呢,继续往下看:

①    C++进阶之STL

STL = Standard Template Library,即标准模板库。这是提高开发效率的极品工具。通过学习此阶段,应掌握泛型编程技巧,理解容器类在C++语言中的应用模式,以及熟练掌握全部STL类的使用方法。

②    C++进阶之设计模式

决定一个项目成败最重要的因素是项目总体的设计,通过本阶段的学习,可掌握面向对象编程中重要的一环,是编码前建模的技巧所在。单例模式;工厂模式;代理模式;迭代模式等,这些都是你要掌握的哦。

③    C++进阶之数据结构基础

这是所有编程语言中最应该学习的部分,程序组成的基础之一。

顺序存储、链式存储、循环链表;

双向链表、栈(顺序和链式)、队列(顺序和链式);

栈的应用、树基本概念及遍历、二叉树;

排序算法、并归算法、选择、插入、快速、希尔。

以上这些内容你知道吗?

④    C++进阶之UI界面开发

掌握QT类库构架,图形界面开发模型;

掌握QT开发技巧,消息机制,图形处理;

掌握QT网络编程,UDP,TCP使用方式;

掌握QT文件处理方式,序列化;

掌握QT在windows,linux,ios,android不同平台下的移植技术。

⑤    C++进阶之Unix/Linux网络服务器

掌握Unix/Linux平台开发方式;

熟练使用系统调用;

熟练Unix/Linux内存管理,进程,线程调度;

熟悉网络服务器开发方式,熟练编写TCP,UCP网络服务程序;

掌握同步/异步IO模型在网络编程中的使用方式。

⑥ C++进阶之数据库开发

掌握SQL语言的实用技巧。Oracle,MySQL数据库的使用方式。

如果你能熟练掌握以上列出的技能,具备解决复杂问题和技术难点的能力,而且你能独立开发一些比较复杂的功能模块,那么很荣幸地告诉你,你已经达到中级水平,薪资过万对你来说简直是小菜一碟。

三、C++开发高级 

读到此处的你,相信你有更高的目标。即是当下炙手可热的全栈开发工程师,既晓前端,又通后台。快速定位问题,解决问题对他们来说已是小菜一碟,就是人们常说的神秘大牛,只在公司技术攻关的时候才会才看到他们的身影。

①此阶段软件开发工作所需的知识和技能相对较难,高级软件工程师编码熟练度和规范性需要达到一定要求;

②具备一定的项目能力(包括调试能力、文档编写能力、测试能力等)和综合技术素质(包括对软件生命周期的理解、对设计模式的理解、必备的行业知识和经验等);.

③了解主流的后台技术和前后端协作方式,能从全局角度理解项目的整个生命周期。

如果你能熟练掌握以上三个阶段的知识技能,那么你就可以满足C++开发行业的高级需求。

大一萌新看过来,“这样”学C++,让你不再迷茫!相关推荐

  1. 大一萌新看过来,C语言学到什么程度,才能“毕业不失业”!

    C语言是目前所有编程语言中公认难度最大的,需要学习技术,掌握知识比较广泛,需要你不断在练习磨炼,所以不像外面培训机构说的几个月就可以出去找工作的. C语言学到什么程度可以出去找工作? 第一,熟练C语言 ...

  2. 开学寄语:开学了,大一萌新准备好了吗?

    心态转换:首先,各位小朋友们,经历了12年寒窗苦读后,你们终于来到了大学,即将开启人生最轻松的一段时光.在大学,你相对以前和以后的生活很"自由".因为高考前我们只能学习,大学毕业后 ...

  3. 计算机大一萌新,要补充哪些计算机基本知识

    大一萌新,对计算机的基础知识.编程基础知识了解不多. 一上课,一上机,就有点惶惶. 这里找到一点计算机编程的入门参考资料. 1.计算机教育中缺失的一课 The Missing Semester of ...

  4. 介绍6点Java的发展方向,让你学完Java后不再迷茫

    众所周知,21世纪是计算机网络的世纪,而Java语言正是服务于网络编程的.Java作为一种语言,已然成为全球最时髦的开发工具之一,它拥有一套庞大且完善的类库,内置了其他语言需要靠库甚至是操作系统才能支 ...

  5. @准大一萌新:学长学姐的N条忠告,字字珠玑,句句经典

    过来人的经验,句句经典,不要以学习为名逼着父母购买高配制的游戏笔记本电脑(95%的专业大一都用不到电脑),如果你决定买电脑,最好不要把它变成影碟机或者游戏机,把他当成生产力工具为你创造更多的价值. 1 ...

  6. java小新人 带着萌新看springboot源码

      这节来说个大家都比较熟悉的东西,就是servlet三大组件,servlet.filter.listener,再说说springboot的内置tomcat.   也许还会说一下tomcat的运行原理 ...

  7. 前端萌新看过来了—— 0基础1小时vue入门到实战

    Vue.js+element ui从零开始一个项目 浅析一下:Vue.js到底是个什么东西? 项目概览 1. 脚手架安装与搭建 2. 初始创建建议 3. 引入element ui框架 4. 测试UI框 ...

  8. 5分钟秒懂隔离见证优势,钱包用户小白萌新看过来

    由于BTC交易量过于庞大,区块空间无法满足,导致大量交易囤积.随着隔离见证的出现,不但减少了每个交易脚本在区块内的占比,还有效降低了数据传输和验证带来的其他成本. 隔离见证,即 Segregated ...

  9. Python 萌新 - 花10分钟学爬虫

    Python 新手入门很多时候都会写个爬虫练手,本教程使用 Scrapy 框架,帮你简单快速实现爬虫,并将数据保存至数据库.在机器学习中数据挖掘也是十分重要的,我的数据科学老师曾经说过,好算法不如好数 ...

最新文章

  1. 你不知道的javaScript笔记(5)
  2. 线程撕裂者安装linux,Linux FreeBSD 12.1跑分测试:在AMD Ryzen线程撕裂者3970X上快得刷新认知...
  3. Paddington2
  4. 一个很棒的Flutter学习资源列表
  5. 【Java文件操作(八)】将控制台输出重定向到txt文件
  6. 大讲堂 | 预测时间敏感的机器学习模型建模与优化
  7. jasmine spyOn的单步调试
  8. LetCode-MSSQL查找重复的电子邮箱
  9. 一些常见的光学标定板模式
  10. Akka 配置Dispatcher(一)
  11. 2018年面试准备汇总
  12. 公司法人没社保零申报,原来可以这样?
  13. 一种pluntUML实时渲染图片的方法
  14. 安装 Eyoucms
  15. 手机屏幕分辨率真的是越高越清晰吗?
  16. cf1102F. Elongated Matrix(状压dp)
  17. 减肥成功,给自己的减肥之路留个纪念(测试博客)
  18. 3分钟为你的应用添加声波通讯功能
  19. Windows 桌面应用开发入门
  20. 基于Kubernetes 构建.NET Core技术中台

热门文章

  1. java向另一activity输入_Activity经典实例一:两个Activity传递数据和对象
  2. windwos cakephp mysql apache_配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
  3. 关于计算机软件技术基础知识,计算机软件技术基础知识要点.doc
  4. python将数据写入excel_【Python】将数据库中的数据查询出来自动写入excel文档
  5. c语言选择法排序案例,谁能给我一个c语言选择排序法的简单例子
  6. Elasticsearch 自定义分析器Analyzer
  7. 互联网晚报 | 04月07日 星期四 |​ ​​​​刘强东卸任京东集团CEO,徐雷接任;世卫组织:中医药对治疗新冠有效...
  8. 互联网晚报 | 3月21日 星期一 |​ 科大讯飞5亿成立科技新公司;新能源车企称采购宁德时代电池成本上涨两万元...
  9. 互联网晚报 | 1月11日 星期二 | 恒大集团退租深圳总部大楼;荣耀发布首款折叠旗舰手机;虎牙拿下5年LPL独播权...
  10. 那些能沉淀自己的人,将会成为最后的赢家