跳到主要内容

C++学习目录大纲


为什么不学习现代C++?!

Tip

下面内容是我初学时候学的, 很多都是非现代的, 有错误的!!!


一、基础篇

1.1 面向对象

1.2 io流篇

1.3 内存模型

二。STL库篇

STL常用数据结构与算法

[C++11] 不可变长数组 array

[C++11] 单向链表 forward_list

[C++11] 声明时初始化二维向量

三、进阶篇

3.1 C++11常用新特性

auto 自动类型推导

decltype

右值引用&& 与 移动语义

列表初始化

For each

Lambda表达式

智能指针

可变参数模版

默认成员函数控制

[STL] array

[STL] forward_list

[STL] unordered系列

[STL] 声明时初始化二维向量

function

regex正则表达式

3.2 C++17常用新特性

折叠表达式

编译期if表达式

auto占位的非类型模板形参

inline 新增用法

结构化绑定

if switch初始化

简化嵌套命名空间与using

Lambda表达式捕获类成员变量的副本(this *)

简化重复命名空间的属性列表

查询头文件宏

更快的字符串与数字的转换 <charconv>

加强版共用体 std::variant

更安全的空值表示 std::optional

实时可改变类型的类型 std::any (像Python的变量一样)

将一个函数和一个参数包一起调用 std::apply (类似Qt槽函数)

解包tuple作为构造函数参数构造对象 std::make_from_tuple

只读的string更省内存 std::string_view

将一个值转换为const引用 std::as_const

文件系统库 std::filesystem (类似Python的os模块)

3.3 C++20常用新特性

模块

协程

三向比较运算符

范围库: <ranges> 与 更简洁的表示容器范围

日期库: <chrono>

format(更像Python的print格式化字符串)

跨度(更安全的遍历指针代表的数组,防止程序员写错)

并发(多线程)

numbers(数学库)

concept(概念(concepts)约束模板类型的语法糖)

四、C++网络编程

4.1 Linux网络编程

网络编程大纲


学习实践版本: B站: TCP/IP 网络编程从零开始

网络协议与进程间通信

最简单的服务端

最简单的客户端

套接字的常用属性

对常用操作进行类封装

(上面只是实现了基础的同步io, 也就是不支持并发...) + (win 编写) + (课程已经到头了(免费的)), 所以我直接转战Linux, 使用VSCode远程连接到Linux并实现免密码登录 进行编程, 来规避环境问题(CLion + cmake 我是真的用不习惯 =-=(有空再学))


系统的理论篇

爱编程的大丙-套接字


socket函数详解

epoll模式


4.2 Windows网络编程

Windows API

IOCP

4.3 [第三方库] Protobuf

网络通信数据的序列化与反序列化

protobuf安装

Protobuf使用

五、C++多线程

5.1 C库实现

序章: 线程概述

线程相关函数

线程同步序言

互斥锁

死锁

读写锁

条件变量

信号量

线程局部存储

5.2 C++11 std::thread库

thread库

this_thread命名空间

call_once (多个线程只执行某代码一次)

C++互斥锁

C++条件变量

原子变量

多线程异步操作


5.3 线程池

线程池原理

代码实现

六、CMake

6.1 CMakeLists.txt的编写

6.1.1 静态库与动态库

七、BUG篇

7.1 链接属性

多文件下模版使用

多文件下内联函数的使用

WinSock2.h与Windows.h头文件

7.2 类型转换

w_char与char

7.3 编码问题

Git推送VS代码出现中文乱码

VS2022编译编码问题

八、编码规范

九、C++第三方库

9.1 QT

其他参考资料

常用网站

tmp

排名不分先后排名不分先后

[拓展/面试]new与malloc的10点区别

[常识/面试]C++中“引用”的底层实现原理详解

[?]10大性能陷阱!每个C++工程师都要知道

请作者喝奶茶:
Alipay IconQR Code
Alipay IconQR Code
本文遵循 CC CC 4.0 BY-SA 版权协议, 转载请标明出处
Loading Comments...