Light-City/CPlusPlusThings(4 万星):从入门到进阶的 C++ 学习之旅——基础核心、C++11 新特性、STL 源码剖析、设计模式、惯用法与实战练习。
内容来源:CPlusPlusThings(光城)
const 那些事
常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。
static 那些事
`static` 那些事
this 那些事
相信在坐的很多人,都在学Python,对于Python来说有self,类比到C++中就是this指针,那么下面一起来深入分析this指针在类中的使用!
inline 那些事
头文件中声明方法
sizeof 那些事
首先来个总结,然后下面给出实际例子,实战!
纯虚函数和抽象类那些事
C++中的纯虚函数或抽象函数是我们没有实现的虚函数!我们只需声明它! 通过声明中赋值0来声明纯虚函数!
vptr_vtable 那些事
为了实现虚函数,C ++使用一种称为虚拟表的特殊形式的后期绑定。该虚拟表是用于解决在动态/后期绑定方式的函数调用函数的查找表。虚拟表有时会使用其他名称,例如“v
virtual 那些事
对应的代码:emp.cpphttps://github.com/Light-City/CPlusPlusThings/tree/master/basic_con
volatile 那些事
被 volatile 修饰的变量,在对其进行读写操作时,会引发一些可观测的副作用。而这些可观测的副作用,是由程序之外的因素决定的。
assert 那些事
断言,是宏,而非函数。
位域那些事
“ 位域 “ 或 “ 位段 “Bit field为一种数据结构,可以把数据以位的形式紧凑的储存,并允许程序员对此结构的位进行操作。这种数据结构的一个好处是它可以
extern 那些事
在C++中常在头文件见到extern "C"修饰函数,那有什么作用呢? 是用于C++链接在C语言模块中定义的函数。
struct 那些事
- 在C中struct只单纯的用作数据的复合类型,也就是说,在结构体声明中只能将数据成员放在里面,而不能将函数放在里面。
struct 与 class 那些事
`struct` 与 `class` 那些事
union 那些事
`union` 那些事
用 C 实现 C++ 多态
C++中的多态:在C++中会维护一张虚函数表,根据赋值兼容规则,我们知道父类的指针或者引用是可以指向子类对象的。
explicit 那些事
`explicit` 那些事
friend 那些事
友元提供了一种 普通函数或者类成员函数 访问另一个类中的私有或保护成员 的机制。也就是说有两种形式的友元:
using 那些事
局部与全局using,具体操作与使用见下面案例:
:: 那些事
`::` 那些事
enum 那些事
枚举有如下问题:
decltype 那些事
decltype的语法是:
引用与指针那些事
总论:
宏那些事
分为几种:#,##,\
C++ STL源码剖析 tr1与std array
源码剖析版本为gcc4.9.1。
C++ STL源码剖析之序列式容器deque
deque是一种双向开口的分段连续线性空间简单理解为:双端队列,可以在头尾端进行元素的插入和删除。
C++ STL源码剖析之哈希表
哈希表,是作为unordered_map与unordered_set等的底层容器,自gcc2.9后源码量大增!
C++ STL源码剖析之实现一个简单的iterator_category
本节使用上节Traits特性,研究iterator源码,来实现一个简单的iterator_category,同时对iterator的源码结构进行分析。
C++ STL源码剖析之双向环形链表list
源码对应的版本为gcc-4.9.1
C++ STL源码剖析之map、multimap、initializer_list
map/multimap 以rb_tree为底层结构,因此有元素自动排序特点,排序的依据是key。
从0到1打牢算法基础之手写一个哈希表
目的:手写实现一个哈希表,采用拉链法构建,每个hashkey对应的是一个红黑树。
C++ STL源码剖析之容器配接器stack与queue、priority_queue
为何stack与queue不被称为容器呢?
C++ STL源码剖析之红黑树
在STL源码中有两段话,简单翻译后如下:
STL之set与multiset那些事
set/multiset以rb_tree为底层结构,因此有元素自动排序特性。排序的依据是key,而set/multiset元素的value和key合二为一:va
C++ STL 源码剖析之 Traits 编程技法
在 STL 编程中,容器和算法是独立设计的,即数据结构和算法是独立设计的,连接容器和算法的桥梁就是迭代器了,迭代器使其独立设计成为可能。如下图所示:
typename
STL底层源码有下面几行,typedef与typename联用,这几个看着好复杂,究竟啥意思,我们今天一起来剖析!
C++ STL源码剖析之unordered_map、unordered_multimap、unordered_set、unordered_multiset
前面学到了hashtable,而这节是hashtable的容器适配器:unordered_map。
STL源码剖析之vector
vector的数据安排以及操作方式,与array非常相似。两者的唯一差别在于空间的运用的灵活性,array是静态的,一旦配置了就不能改变,而 vector是动态
STL设计之EBO(空基类优化)
EBO简称Empty Base Optimization。
初始化列表与赋值
- const成员的初始化只能在构造函数初始化列表中进行
C++惯用法之enum class
在Effective modern C++中Item 10: Prefer scoped enums to unscoped enum,调到要用有范围的enum
C++惯用法之消除垃圾收集器-资源获取即初始化方法(RAII)
在C语言中,有三种类型的内存分配:静态、自动和动态。静态变量是嵌入在源文件中的常数,因为它们有已知的大小并且从不改变,所以它们并不那么有趣。自动分配可以被认为是
copy-swap 惯用法
> 为什么我们需要复制和交换习惯?
C++惯用法之pImpl
“指向实现的指针”或“pImpl”是一种 C++ 编程技巧,它将类的实现细节从对象表示中移除,放到一个分离的类中,并以一个不透明的指针进行访问。
10日c++实战狂练
- x day1https://github.com/Light-City/CPlusPlusThings/tree/master/practical_exer
Day4 · const 练习
�����͵Ķ��������г�ʼ�������Ҳ��ܱ����¡�
��Ԫ���
��Ԫ��C++�ṩ��һ���ƻ����ݷ�װ���������صĻ��ơ�
Day5 · 构造与析构
һ��������Ա�Ĺ���
Day5 · 继承与访问控制
һ�����м̳�
Day5 · 运算符重载
1.���������������Ĺ�ϵ
Day5 · 三五法则
һ�����캯�������������Ĺ������
Day5 · virtual 练习
��̳��µĶ����ԣ��ڶ�̳з�ʽ�£�������̳��˶������ij�Ա����������ͬ����ӵ��ͬ����Աʱ�����ײ������ֳ
Day6 · 综合练习
一、多态性
Day7 · 综合练习
运算符重载是C++的一项强大功能。通过重载,可以扩展C++运算符的功能,使它们能够操作用户自定义的数据类型,增加程序代码的直观性和可读性。
Day8 · 综合练习
ģ�壨template����C++ʵ�ִ������û��Ƶ���Ҫ���ߣ��Ƿ��ͼ������������������ص�ͨ�ó�����Ƽ�����
异常处理
1.catch捕获异常时,不会进行数据类型的默认转换。
Day10 · 综合练习
文件例题
重点实战练习
├── 中括号重载.cpphttps://github.com/Light-City/CPlusPlusThings/tree/master/practical