C++,从入坑到放弃···
知乎上有人提问:如何在一个月内提高C++水平:
虽然大家常常调侃C++是一门永远也精通不了的语言,但题主有Java基础,之前又初学过C++,一个月的时间强行突击还是可以把C++常用的东西拿下,应对面试问题不大。至于那些炫技和装逼用到的冷门技能,工作以后再慢慢学也不迟。
编译器推荐使用Visual Studio,功能强大,后续有很多项的学习可以依靠VS进行。
第一周:C基础
Day1
: HelloWorld,学习基础数据类型int/short/long/char/float/double,类型转换,学习输入输出,学习宏定义及其展开Day2
: 学习使用调试器,学习单步调试执行程序,学习在调试器下观察变量变化,学习在调试器下查看进程的内存数据。Day3
: 学习数组,学习typedef用法Day4
: 学习指针,理解什么是变量的地址,通过调试器观察指针内容,理解指针的内涵。Day5
: 学习函数,函数传参,默认参数,直接传参和指针传参;学习函数指针。Day6
: 学习结构体、联合体、枚举,通过调试器观察它们在内存层面到底是什么表现形式,学习sizeof用法Day7
: 写一个简单程序,把上面内容都用上,在调试器下打开汇编执行页面,把源代码和汇编指令对照起来,观察并理解编译型强类型语言执行的本质,观察函数调用和执行过程中栈的变化,把变量、数组、结构体、参数这些编程语言层面的东西理解透彻。
第二周:面向对象基础
Day8
: 学习class编写,理解封装性,学习成员访问权限,学习构造函数析构函数、成员初始化方式。在调试器下,观察构造函数和析构函数执行时机。Day9
: 学习继承、函数重载、运算符重载,学习命名空间Day10
: 学习new/delete/delete [],学习string的使用,学习深拷贝与浅拷贝Day11
: 学习多态,虚函数,并在调试器下观察对象结构、内存对齐,虚函数表指针、虚函数表,理解虚函数原理。Day12
: 学习friend、const、static、explicit关键字用法Day13
: 学习四大类型转换,学习异常处理Day14
: 学习泛型编程基本操作
第三周:STL
Day15
: 学习vector、list用法,学习迭代器使用Day16
: 学习map/stack/queue用法Day17
: 学习STL常用算法:find、find_if、count、sort、swap、replace···Day18
: 学习仿函数Day19
: 结合STL源码,深入学习迭代器的各种姿势Day20-21
: 结合STL源码,深入学习vector、list、map底层基本原理
第四周:C++11
Day22
: 学习自动类型推断、auto、decltype关键字用法Day23
: 学习智能指针,shared_ptr、weak_ptr,结合源码学习智能指针底层原理Day24
: 学习using关键字、for each循环、nullptrDay25
: 学习临时对象、右值引用、转移构造函数Day26
: 学习使用线程库进行多线程编程、线程同步Day27
: 学习lambda表达式、学习tupleDay28
: 学习哈希表unordered_map和unordered_set使用
准备面试
Day29
: 题主说算法和数据结构还算熟悉,建议用C++刷一天LeetCode,找找写代码的感觉Day30
: 背一背C++相关的八股文面试题,比如这个:
你可以点击文末左下角的阅读原文一键直达哦~ https://www.zhihu.com/question/451327108/answer/2073547650
更详细的C/C++后端学习路线图,参考之前的这篇:
评论