首先是一本好的C++书籍(Accelerated C++, C++ Primer),然后以及尽量多的完成书籍的习题,可以帮助完成C++语法的学习。虽然前面的书籍涵盖了标准库,但是不够完善,这个时候你可以选择在线查阅C++标准库这种泛型的学习方式,也可以选择阅读《C++标准库》的方式进行学习。通过这样的步骤,你应该可以完成C++的初步学习了。

然后,由于C++是一门系统级语言,我想你需要到大三学习操作系统的时候,才会明白栈与堆、内存管理等更深层次的含义。但是,在明白这些概念之前不会妨碍你利用C++做一些事情,比如写一个简单的XML Parser。这个时候,你应该会发现很多问题,如效率,代码规范等,这个时候,你可以研究Effective C++,Google C++ Code Standard等,只有自己犯了错,回过头反省才会更加深刻。

随后,你可以更加深刻的去思考C++,你需要阅读《The Design and Evolution of C++》。这本书的阅读,会教会你很多,是对你影响最大的C++书籍。如果你对C++编译器的一些细节有兴趣,深入C++对象模型可以推荐。如果你对STL的一些实现有兴趣,可以去翻翻STL源代码(很多人推荐STL源码剖析,但是我没有阅读过,我没有办法发表是否应该推荐的观点,列出来供你自行判断是否应该阅读)。

到这一步骤,我想你应该可以称为C++ Programmer了,剩下的就是实践中发现问题,然后补足自己。

此外,由于C++博大精深,应用的范围多如牛毛,特定方向所需要的知识未列举。比如你要研究Android的NDK什么的,那就是属于你后面的事情了。

下面转来一些另一位的关于C++学习书籍的建议作为参考:

不了解C++的人先认识一下C++(系统学习材料附后)。

Effective C++ 3e 条款1:视C++为一个语言联邦

为了理解C++,你必须认识其主要的次语言。幸运的是总共只有四个:

  • C。说到底C++ 仍是以C为基础。区块(blocks)、语句(statements)、预处理器(preprocessor)、内置数据类型(built-in data types)、数组(arrays)、指针(pointers)等统统来自C。许多时候C++ 对问题的解法其实不过就是较高级的C解法(例如条款2谈到预处理器之外的另一选择,条款13谈到以对象管理资源),但当你以C++ 内的C成分工作时,高效编程守则映照出C语言的局限:没有模板(templates),没有异常(exceptions),没有重载(overloading)……
  • Object-Oriented C++。这部分也就是C with Classes所诉求的:classes(包括构造函数和析构函数),封装(encapsulation)、继承(inheritance)、多态(polymorphism)、virtual函数(动态绑定)……等等。这一部分是面向对象设计之古典守则在C++ 上的最直接实施。
  • Template C++。这是C++ 的泛型编程(generic programming)部分,也是大多数程序员经验最少的部分。Template相关考虑与设计已经弥漫整个C++,良好编程守则中"惟template适用"的特殊条款并不罕见(例如条款46 谈到调用template functions时如何协助类型转换)。实际上由于templates威力强大,它们带来崭新的编程范型(programming paradigm),也就是所谓的template metaprogramming(TMP,模板元编程)。条款48对此提供了一份概述,但除非你是template激进团队的中坚骨干,大可不必太担心这些。TMP相关规则很少与C++ 主流编程互相影响。
  • STL。STL是个template程序库,看名称也知道,但它是非常特殊的一个。它对容器(containers)、迭代器(iterators)、算法(algorithms)以及函数对象(function objects)的规约有极佳的紧密配合与协调,然而templates及程序库也可以其他想法建置出来。STL有自己特殊的办事方式,当你伙同STL一起工作,你必须遵守它的规约。

- 要系统学习C++,自然离不开学习资料。。。

系统学习之

  1. C++ Primer 第五版 (豆瓣) Stanley B.Lippman
  2. 可不看的书:The C++ Programming Language(新手未必参透),
    Essential C++(lippman的入门小书,不够系统)

规范使用之

  1. Effective C++ 第三版 (豆瓣) Meyers
  2. Effective STL (豆瓣) Meyers
  3. 可不看的书(讲解都远不如Effective系列细致,并且和以上两本有相当可观的重复条目):
    C++ Coding Standards(中译名:C++编程规范 ),
    Exceptional C++(系列)

分类学习之

1. C++标准程序库:自修教程与参考 (db) Nicolai M. Josutti STL使用必看!
(先学会怎么用,对照Effective STL)
2. STL源码剖析 (豆瓣) (看看容器、迭代器、算法、函数对象乃至分配器的实现技巧)
3. 超越C++标准库:Boost库导论 (豆瓣) (Boost有比较完善的doc。可不看的书:《Boost程序库完全开发指南》有点啰嗦)
The Boost C++ Libraries 第二版(Sept. 2014)
这本书也非常实用,附带讲解,适合入门!第二版基于 Boost 1.55.0 和 1.56.0 。第一版的中文翻译: Highscore - Boost C++ 库
Boost.Asio C++ Network Programming(一本很好的网络编程入门小书)
4. SGI STL Programmer's Guide (STL的话可以参考SGI的编程指南)

后续:

  1. Effective Modern C++ (豆瓣) Meyers新作!新的C++特性,必看啊!
  2. More Effective C++ (豆瓣) Meyers (这本书没有再版 里面部分内容在Effective C++ 第三版中有提及,所以可以放到后续里再看)
  3. C++Templates (豆瓣)
  4. C++设计新思维 (豆瓣) Andrei Alexandrescu

- 要系统学习C++,离不开敲代码(呵呵)

阅读书本,查看文档,实践项目这些都是学习的通用手段,每个人都明白。要训练的是让自己更为高效的掌握这个输入输出不断迭代的过程。系统掌握一门语言,其实也挺难的,有侧重的掌握功能构件,循序渐进,一一击破也许更为恰当。

不看书不看资料肯定是不行,你毕竟要学习的是C++啊,不可能按照别的语言习惯去写,不可能只局限于实现功能,特别是C++还提供了这么多精彩的入门与深入的学习资料。

最后,感兴趣的可以搜搜这篇文章:
“典型的C++ 程序员成长经历 ”

更多内容参阅:https://www.zhihu.com/question/23447320

如何系统的学习C++(亡羊补牢,为时不晚)相关推荐

  1. 这样系统的学习分布式,他日必成大器!

    来源:https://juejin.im/post/6875134797228802056 作者:伴鱼技术团队 本文的缘起是回答知乎圆桌会议「分布式系统之美」的问题「如何系统性地学习分布式系统?」,后 ...

  2. python编程视频-【科研资源03】最全Python编程全套系统视频学习教程

    原标题:[科研资源03]最全Python编程全套系统视频学习教程 01 资源介绍 从事Python开发这么久,也了解了不少,我发现Python主要有以下四大主要应用:网络爬虫.web开发.人工智能.自 ...

  3. linux线程并不真正并行,Linux系统编程学习札记(十二)线程1

    Linux系统编程学习笔记(十二)线程1 线程1: 线程和进程类似,但是线程之间能够共享更多的信息.一个进程中的所有线程可以共享进程文件描述符和内存. 有了多线程控制,我们可以把我们的程序设计成为在一 ...

  4. web前端学习文档 电子版_web前端小白系统入门学习

    正文 互联网正在改变我们的生活,前端也成了很重要的岗位之一,许多人都往前端靠拢,可又无能为力,不知所措,首先我们说为什么在编程里,大家都倾向于往前端靠呢?原因很简单,那就是,在程序员的世界里,前端开发 ...

  5. 以任务为向导建立系统的学习知识流程

    2019独角兽企业重金招聘Python工程师标准>>> 以任务为向导建立系统的学习知识流程 转载于:https://my.oschina.net/treebug/blog/16032 ...

  6. 睡前必读 | 如何系统性地学习分布式系统?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 导语:本文的缘起是回答知乎圆桌会议「分布式系统之美」的问题「如何系统性地学 ...

  7. 后台系统可扩展性学习笔记

    整理了一下笔记目录,将以前学习的一些知识串联起来了,比如cdn.负载均衡.中间件,以前只是各自了解了一点,现在大概理清了后台系统设计中他们各自的作用. 后台系统可扩展性学习笔记(一)概要 后台系统可扩 ...

  8. 嵌入式Linux系统编程学习之二常用命令

    嵌入式Linux系统编程学习之二常用命令 文章目录 嵌入式Linux系统编程学习之二常用命令 前言 一.常用命令 1.su(用户切换) 2.useradd(添加用户) 3.passwd(修改密码) 4 ...

  9. 嵌入式Linux系统编程学习之一目录结构

    嵌入式Linux系统编程学习之一目录结构 文章目录 嵌入式Linux系统编程学习之一目录结构 前言 一.Linux目录结构 前言 Linux目录结构 一.Linux目录结构 /bin:存放Linux的 ...

  10. 嵌入式系统开发学习步骤(Linux高级编程学习顺序)

    2019独角兽企业重金招聘Python工程师标准>>> 嵌入式系统开发学习步骤(Linux高级编程学习顺序) 1.Linux 基础 安装Linux操作系统 Linux文件系统 Lin ...

最新文章

  1. ios架构篇-1 项目组织架构
  2. python编程题-100道Python编程题及答案(一)
  3. 如何构建 SaaS 网站的高转化?
  4. VirtualBox压缩vmdk、vagrant打包box一口气全对
  5. 大幅广告显示隐藏效果
  6. html 游戏首页,30个让人玩上瘾的HTML5游戏
  7. INADDR_ANY的确切含义
  8. 小菜找实习——阿里3月20日笔试第二题
  9. FX5 C的编程语言,三菱FX5-C32EX/D手册FX5-C32EX/D编程手册 - 广州凌控
  10. Java 将Excel转为XML
  11. 【行业】盘点BAT如何进行技术布阵
  12. UI进阶——XMPP即时通讯
  13. 雷蛇键盘灯光配置文件_三模连接一步到位,游戏宅女必备的雷蛇电竞外设套装...
  14. 传智:自己简单实现一个struts2框架的demo
  15. linux下的蓝牙驱动程序详解
  16. 焦作大学计算机专业分数线,焦作大学历年分数线 2021焦作大学录取分数线
  17. 10、JDBC(重点)
  18. MYS-6ULX-IOT 开发板测评——使用MfgTool更新系统
  19. win10系统excel2019快速实现间隔行填充颜色快捷键的方法
  20. 设计模式 -- 访问者模式(Visitor)

热门文章

  1. 【OJ每日一练】1168 - 英文数字
  2. AliOS-Things--linkkitapp (6)打印日志
  3. 产业互联网论道长沙:转型“迷雾”重重,企业如何躬身入局?
  4. R-CNN、Fast R-CNN、Faster R-CNN学习笔记
  5. Videos Understanding Dataset
  6. 为什么4S店一听到我要全款买车,就说没现车,朋友去问说贷款买,就说有现车?
  7. android学习手册!2021年Android程序员职业规划!真香!
  8. 来自Google的响应式——Agera
  9. linux关机一直重启,Linux关机与重启
  10. vue-element-admin 生成顶部导航栏解决方案