如何系统地学习 C++ 语言?(2021年4月更新)

GitHub,永远滴神!

一、C++ 快速入门指南

首先分享一个最近在 GitHub 特火的一个 C++ 项目:C++ 快速入门指南。

地址:github.com/Light-City/C

这是一个适合初学者从入门到进阶的仓库。

这个开源项目的作者是一名研一才接触 C++ 的同学,目前已经拿到了鹅厂后台开发的 offer。

一开始他只是在 GitHub 上建立「C++ 那些事」只是作为自己的学习笔记。但没想到,两年内,这个项目受到越来越多人的追捧,并在本月初登上了热榜,于是他对整个项目的结构做了梳理规划,细分出了「基础」、「进阶」、「实战」板块,并将所有代码开源供大家学习,此外还专门为这个项目做了网站。

地址:light-city.club/sc/

v2-bb36c474172cd71d781485834386075b_b.jpg

它可以帮助初学者了解如何入门 C++,也可以帮助面试者如何深入 C++。

整个项目包括从入门到就业的全部环节,称得上是保姆式的编程指南。

我觉得这个项目是最符合题主要求的一个项目了。

二、写个小白的 C++ 学习路线!

参考来源: mp.weixin.qq.com/s/bzE9
作者:CodeSheep

写个小白的 C++ 学习路线!

v2-b1470b7b325048c6bf9248b0a9c15239_b.jpg

1、C++ 的工作岗位有哪些?

C++主要还是做后台(服务端)开发比较多,包括:

  • 通信公司后台开发
  • 互联网公司后台开发
  • 游戏公司后台开发
  • ……

当然这个后台开发具体职责又有很多细分,比如:

  • 有做数据处理和分析的
  • 有做基础协议和通信的
  • 有做服务端底层应用优化的
  • 甚至还有做后台系统驱动和内核的
  • ……

不管怎样,下面即将要介绍的这些学习路线和内容适用于以上所有情况。

2、C++ 的学习书籍推荐?

  • C++和C语言确实是不同的语言,但是C++确实是对C语言的延伸,可以理解为在C语言里加入了面向对象的特性。因为只有面向对象特性的加持,代码才能更好的复用扩展工程化,这是大型项目的必备要素
  • 除了C语言所有的底子之外,还需要学习C++的面向对象(封装、继承与多态)特性、泛型、模板、STL等等
推荐书籍(有先后顺序):《C++ Primer》、《Effective C++》、《C++ 标准程序库》、《STL源码剖析》《深度探索C++对象模型》

补充一个小建议:语言部分的学习建议不要拖太久,一定要规划好时间,一鼓作气,高强度给它压下来,否则容易把自己拖泄气。

3、编程基础“四大件”

基础四大件包括:数据结构和算法计算机网络操作系统设计模式

这跟学什么编程语言、后续从事什么编程方向均无关,只要做编程开发,这四个计算机基础就无法避开。可以这么说,这基础四大件真的比编程语言重要!!!

具体介绍可以看我之前写的一篇回答。

计算机基础知识对程序员来说有多重要?

4、应用实践编程

这部分会涉及到一些工具、编程环境、和具体编程实践,应该说这一部分学完,自己应该能做点东西出来、或者说能看懂一些实际项目的代码。

实践这部分,我也是结合我之前在通信公司的实际工作经历和所听所见,来聊一聊。

1、Linux操作系统的使用

很多人初学C语言、C++(包括我)都是在Windows环境上进行的,而实际企业级开发几乎不可能,所以Linux系统必须要会,我们别无选择。先谈使用。

包括:常见的Linux操作命令基本的Shell编程

推荐书籍:《鸟哥的Linux私房菜》

2、编译/调试工具

首先是跟编译相关的:编译工具!

我们知道很多人学C语言、C++都在类似Visual Studio这种集成IDE里进行代码编译,这个其实也用了编译器,只不过是微软自家的MS编译器,而且所有操作均可视化。而企业里开发很少会基于Windows系统,所以Linux平台上的编译器更为重要,最典型的当属 GCC,甚至有些公司有自己定制过的交叉编译工具,但没关系,只要 GCC熟悉,其他问题都不大。

其次,大家自学C语言、C++,都借助类似VS这种IDE,点按钮即可对源文件编译。而企业里实际项目的编译动作叫 make,编译的实际动作和过程都是写在 makefile文件里,所以makefile的书写规则建议学习!

最后说到调试工具,Linux平台上的 GDB调试工具要熟练使用,会借助于它进行调试。

推荐资料: 这部分没有书可推荐,英文好的同学可以直接看 GNU官网关于 GCC和 GDB的文档,中文材料可以看:《debuging with gdb》(中文版)和陈皓先生的《跟我一起写makefile》

3、Linux环境编程

还是那句话,企业里C语言和C++几乎都是基于Linux平台的,这一部分我们没办法避开

(1)Linux系统编程

众所周知,Windows系统编程里有各种各样的Windows API,同理Linux系统API的使用就更加重要。

(2)多线程编程

此处指的是多线程编程实践相关的东西,一般包括:线程、资源、信号、同步、互斥、锁等等一些具体的编程方法。

(3)网络编程

此处的网络编程主要指的是具体Linux系统上的网络编程 API和 IO函数的编程实践。

推荐书籍:这三部分综合在一起,推荐必看书籍包括《Unix环境高级编程》、《Linux高性能服务器编程》、《POSIX多线程程序设计》

三、书籍推荐


下载链接:链接: pan.baidu.com/s/1MrfDkP 密码: ufh5


手册类:

  1. 《C++程序设计语言(The C++ Programming Language)》
  2. 《C++标准程序库(C++ Standard Library Tutorial and Reference) 》
  3. 《The C++ IO Streams and Locales》
  4. 《The C++ Standard (INCITS/ISO/IEC 14882-2011)》
  5. 《Overview of the New C++ (C++11/14) 》
  6. 《The Standard C Library》

初级:

  1. 《C++ Primer》
  2. 《Accelerated C++》
  3. 《C++编程思想(Thinking in C++) 》
  4. 《C++程序设计原理与实践 (Programming: Principles and Practice Using C++ )》
  5. 《C++初学者指南》
  6. 《C++ Primer Plus》
  7. 《Visual.C++.2008入门经典》
  8. 《面向对象程序设计—C++语言描述》
  9. 《数据结构(C++语言版)第三版_邓俊辉》

实用:

  1. 《Effective C++ 》
  2. 《Effective STL》
  3. 《深入浅出设计模式》
  4. 《设计模式:可复用面向对象软件的基础》
  5. 《HeadFirst设计模式》
  6. 《大话设计模式》

中级:

  1. 《More Effective C++ 》
  2. 《Exceptional C++ 》
  3. 《More Exceptional C++》
  4. 《Exceptional C++ Style》
  5. 《C++编程规范(C++ Coding Standards) 》
  6. 《C++ 模板完全指南(C++ Templates: The Complete Guide)》
  7. 《Beyond the C++ Standard Library(Boost)》
  8. 《C和C++安全编码》
  9. 《深入理解C++11》

高级:

  1. 《C++设计新思维-泛型编程与设计模式之应用(Modern C++ Design ) 》
  2. 《C++模板元编程(C++ Template Metaprogramming)》
  3. 《C++ Concurrency In Action》
  4. 《Advanced c++ Programming Styles and Idioms 》
  5. 《Real-Time C++ Efficient Object-Oriented and Template Microcontroller Programming》
  6. 《Advanced_Metaprogramming_in_Classic_C 》

经典古老:

  1. 《C++的设计与演化(The Design and Evolution of C++ )》
  2. 《C++沉思录(Ruminations on C++) 》
  3. 《大规模C++程序设计(Large Scale C++ Software Design)》
  4. 《深度探索C++对象模型 (Inside the C++ Object Model )》

计算机网路:

  1. 《TCP/IP卷一》
  2. 《计算机网络:自顶向下》
  3. 《图解HTTP和图解TCP/IP》
  4. 《计算机网络》

操作系统:

  1. 《深入理解计算机系统》
  2. 《现代操作系统》
  3. 《Linux内核设计与实现》
  4. 《Unix网络编程》

数据结构与算法:

  1. 《算法导论》
  2. 《数据结构与算法(Java版)》
  3. 《算法图解》《啊哈算法》
  4. 《剑指offer》
  5. LeetCode教科书式刷题网站

数据库:

  1. 《数据库原理》
  2. 《SQL必知必会》
  3. 《深入浅出MySQL》
  4. 《MySQL技术内幕:innodb存储引擎》
  5. 《高性能Mysql》
  6. 《Redis实战》
  7. 《Redis设计与实现》

分布式:

  1. 《分布式应用》
  2. 《大型网站技术架构》
  3. 《大型分布式网站架构设计与实践》
  4. 《分布式服务框架原理与实践》
  5. 《大型网站系统与Java中间件开发实践》
  6. 《从Paxos到Zookeeper分布式一致性原理与实践》
  7. 《大规模分布式存储系统》

云计算:

  1. 《OpenStack设计与实现》
  2. 《docker入门与实践》
  3. 《Kubenetes权威指南》

大数据:

  1. 《大数据技术原理与应用》
  2. 《Hadoop实战》
  3. 《Hadoop权威指南》

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质?你是否想成为一名资深开发人员,想开发别人做不了的高性能程序?你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? 那么C++就是你个人能力提升,职业之路进阶的不二之选。【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署;2.吊打一切关于C++的笔试面试题;3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块基础篇本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。进阶篇本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。提升篇:本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值