前言

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

简介

随着互联网及互联网+深入蓬勃的发展,经过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. 如何快速下载ubuntu镜像

    使用国内镜像地址下载: 中科大http://mirrors.ustc.edu.cn/ubuntu-releases/ 阿里云开源镜像站http://mirrors.aliyun.com/ubuntu- ...

  2. modern php enable zend opcache

    字节码缓存能存储预先编译好的php代码 * 如果是自己编译PHP ./configure --enable-opcache 编译好后 php.ini zend_extension=opcache.so ...

  3. javascript 继承 inheritance prototype

      * Rectangle继承Shape function Shape() { this.x = 0; this.y = 0; } Shape.prototype.move = function(x, ...

  4. VMware安装最新版CentOS7图文教程

    https://blog.csdn.net/reticent_man/article/details/80732395 https://blog.csdn.net/q2158798/article/d ...

  5. python学习笔记(九)-函数2

    交换两个变量的值 a = 2 b = 1 b = 1 a = 2 #方式一: b,a = a,b #交换两个变量的值 print(a,b) #方式二: a = a + b #3 b = a - b # ...

  6. django中csrf_token处理方式

    第一:先在HTML中加入{% csrf_token %} $.ajax({ url: '{% url "ceshi:list" %}', type: 'post', dataTyp ...

  7. Phalcon如何切换数据库《Phalcon入坑指南系列 三》

    本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能(项目配置.控制器.模型.增.删.改.查) 三.Phalcon ...

  8. 数据结构与算法——弗洛伊德(Floyd)算法

    介绍 和 Dijkstra 算法一样,弗洛伊德(Floyd)算法 也是一种用于寻找给定的加权图中顶点间最短路径的算法.该算法名称以创始人之一.1978 年图灵奖获得者.斯坦福大学计算机科学系教授罗伯特 ...

  9. Springboot在有锁的情况下如何正确使用事务

    1. 概述 老话说的好:想要赚钱,就去看看有钱人有什么需求,因为有钱人钱多,所以赚的多. 言归正传,在Java项目的研发中,"锁"这个词并不陌生,最经典的使用场景是商品的超卖问题. ...

  10. MySQL MHA 运行状态监控

    一 项目描述 1.1 背景 MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能.MHA ...