一篇快速掌握基础C++的教程,最近在Linux下编程较多用到的C++知识有些许荒废了,这个旨在能够快速帮助自己回顾c++的面向对象基本知识。
C++基础上手教程 | |
---|---|
一.面向对象基础**和类中的几大基础函数 | 二.继承与多态基础 |
三.多重继承基础 | 四.虚函数,抽象和封装的基础 |
五.友元基础 | 六.C++的文件IO |
七.C++的泛型编程(模板)基础 | 八.namespace命名空间基础 |
知道了为什么?就知道了知识。
有一部文章我全部以源代码+注释形式书写直接看源文件即可,看了示例代码与注释就能弄明白相应的知识点。只有关键部分会有专门文章总结。代码才是最好的老师。
一.虚拟内存,函数堆栈调用过程,编译链接详解--从底层来理解代码
-
C++基础精髓依次讲述了C++函数知识,const关键字与指针,左值右值引用,以及C++的内存管理。
-
右值引用是C++减少默认函数调用,智能指针,move移动语义和forward类型完美转发的基石也是现代C++极其重要的特性。到了C++的优化中我会花大力气讲述右值引用带来的巨大提升。
源文件在 点此跳转 为什么C++会有这一些函数?赋值构造函数和拷贝构造函数解决了什么问题(浅拷贝)? 构造函数,析构函数,拷贝构造函数,赋值构造函数,以及后续会讲到的move构造函数是为什么存在?(这个学名叫move constructor,有的中文翻译为带右值引用参数的构造函数这种翻译是不太好的)
要明确模板的实例化,模板的实参推演,模板特例化,部分特例化。 一文了解模板以及实现一个vector,这个vector没有迭代器,后面会实现带迭代器版本。
运算符重载有什么用?要明白运算符重载与泛型算法密切相关。
- 泛型算法参数接收的都是迭代器,泛型算法往往是给所有容器用的全局函数,泛型算法有一套方法能够统一的遍历所有的容器的元素(通过迭代器)。迭代器一般实现为容器的内部嵌套类型,因为不同容器操作不同。
- 而迭代器大量运用到了运算符重载。
通过实现近乎完整String和迭代器失效以及new和delete重载来学习运算符重载
八.STL底层原理浅析及使用-源文件夹 stl没有什么好讲的关键构建知识图谱:顺序容器(vector,deque,list),容器适配器即底层是vector等容器的(stack,queue,priority_queue),关联容器(set,map,unordered_set,unordered_map),近容器(string,bitset),迭代器和反向迭代器,函数对象,泛型算法
其中难以理解的就是函数对象,所谓函数对象就是重载了该()运算符的对象而已。
C++的优化以及右值引用的价值 -- 讲解了move和forward,实现了更加完整的vector
实战:字符串分割技术以及function原理 -- 用来理解function,bind以及lambda