前言

学习这件事不在乎有没有人教你,最重要的是在于你自己有没有觉悟和恒心。 —— 法布尔

简介

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

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

这么牛的语言,你是不是想知道怎样学习和掌握它呢?接下来请看经过小编整理过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. LoadRunner从入门到实战学习路线(持续更新中...)

    写在前面        我是一个测试工程师,从土木工程行业转行到互联网行业,目前是工作的第三年.平时主要做功能测试,性能测试接触比较少,虽然以前培训的时候学习过一些性能相关的知识,但都是入门初级的知识 ...

  2. 3000字编程入门--附带Java学习路线及视频

    Title: 编程入门 GitHub: BenCoper Reference: 尚硅谷-2019 Study: 文字版+视频+实战(第一个自学的网站) Explain: 文末附带Java学习视频以及项 ...

  3. crontab入门及进阶学习笔记

    crontab不是通常意义下的linux指令,它更是一个配置工具.通过这个工具,我们可以为系统定制固定周期的任务. 1.crond和crontab 1)   crond:cron服务的守护进程,用于定 ...

  4. Android开发书籍推荐:从入门到精通系列学习路线书籍介绍

    Android开发书籍推荐:从入门到精通系列学习路线书籍介绍 很多时候我们都会不断收到新手的提问"Android开发的经典入门教材和学习路线?"."Android 开发入 ...

  5. (转)Android开发书籍推荐:从入门到精通系列学习路线书籍介绍

    Android开发书籍推荐:从入门到精通系列学习路线书籍介绍 转自:http://blog.csdn.net/findsafety/article/details/52317506 很多时候我们都会不 ...

  6. 正则表达式入门之学习路线&七个问题

    由于工作需求,需要使用正则表达式查找满足某种模式的字符串,但因为之前都没有接触过相关内容,最开始的时候看了一些已经被别人写好了的正则表达式,本来打算可能可以直接使用: 最全的常用正则表达式大全——包括 ...

  7. 【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线

    [Zigbee技术入门教程-01]Zigbee无线组网技术入门的学习路线 广东职业技术学院  欧浩源 一.引言    在物联网技术应用的知识体系中,Zigbee无线组网技术是非常重要的一环,也是大家感 ...

  8. stm32入门学习路线个人见解

    可以说就目前的市场需求来看,stm32在单片机领域已经拥有了绝对的地位,51什么的已经过时了也只能拿来打基础了,最后依然会转到stm32来,也正是因为这样stm32的学习者越来越多,其中不难发现绝大部 ...

  9. Python语言学习之Python入门到进阶

    人们常说Python语言简单,编写简单程序时好像也确实如此.但实际上Python绝不简单,它也是一种很复杂的语言,其功能特征非常丰富,能支持多种编程风格,在几乎所有方面都能深度定制.要想用好Pytho ...

随机推荐

  1. python风格对象

    对象表示形式 python提供了两种获取对象字符串表示形式的标准方式 repr()         //便于开发者理解的方式返回对象的字符串表示形式(一般来说满足obj==eval(repr(obj) ...

  2. 《手把手教你》系列技巧篇(二十七)-java+ selenium自动化测试- quit和close的区别(详解教程)

    1.简介 尽管有的小伙伴或者童鞋们觉得很简单,不就是关闭退出浏览器,但是宏哥还是把两个方法的区别说一下,不然遇到坑后根本不会想到是这里的问题. 2.源码 本文介绍webdriver中关于浏览器退出操作 ...

  3. python二级 之 第 五套

    1. 这里要注意输入的   就是列表 .                 [1,2,3] 2. 就是你要明白   random.seed()  产生随机种子# 与random.randint()  取 ...

  4. 鸿蒙内核源码分析(重定位篇) | 与国际接轨的对外部发言人 | 百篇博客分析OpenHarmony源码 | v55.01

    百篇博客系列篇.本篇为: v55.xx 鸿蒙内核源码分析(重定位篇) | 与国际接轨的对外部发言人 | 51.c.h.o 加载运行相关篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | 应用程 ...

  5. AngularJS的简单实用

    Angular Js 的初步认识和使用    一:        1.模块化            定义模块和控制器  ng-app="myapp"  controller=&qu ...

  6. window.postMessage 在iframe父子页面数据传输

    介绍 https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage window.postMessage 发送方 接收方 示例 ...

  7. 精准容量、秒级弹性,压测工具 + SAE 方案如何完美突破传统大促难关?

    作者 | 代序 阿里云云原生技术团队 本文整理自<Serverless 技术公开课>,"Serverless"公众号后台回复"入门",即可获取系列文 ...

  8. ElasticJob 3.0.0:打造面向互联网生态和海量任务的分布式调度解决方案

    ElasticJob 于 2020 年 5 月 28 日重启并成为 Apache ShardingSphere 子项目.新版本借鉴了 ShardingSphere 可拔插架构的设计理念,对内核进行了大 ...

  9. HashMap、ConcurrentHashMap红黑树实现分析

    本文学习知识点 1.二叉查找树,以及二叉树查找带来的问题. 2.平衡二叉树及好处. 3.红黑树的定义及构造. 4.ConcurrentHashMap中红黑树的构造. 在正式分析红黑树之前,有必要了解红 ...

  10. 3 Implementation: The Big Picture 实现:蓝图

    三.Implementation: The Big Picture 实现:蓝图 3.1 Layering of a .NET Solution .Net解决方案的分层 The picture belo ...