Skip to content
Gains Summary
Main Navigation 首页 / Home
C++ 编程 / C++ Programming
系统与高性能 / Systems & Performance
Web 开发 / Web Development
人工智能 / Artificial Intelligence
工业软件 / Industrial Software
其他内容 / Other Topics
C++ 编程 / C++系统与性能 / SystemsWeb 开发 / Web人工智能 / AI工业软件 / Industrial

外观

Sidebar Navigation

C++ 编程 / C++ Programming

C++ 完整知识体系 / Complete C++ Knowledge System

基础语法与编译模型 / Language & Compilation

C++ 语言基础完整学习手册 / Complete C++ Language Basics Guide

C++ 语言基础与程序运行 / C++ Language Basics and Program Execution

C++ 程序是怎样做出来的:从源码到可执行文件 / From Source to Executable

值、类型与对象:C++ 程序中的第一层现实 / Values, Types, and Objects

表达式、运算符与控制流 / Expressions, Operators, and Control Flow

函数、作用域与重载 / Functions, Scope, and Overloading

数组、指针与字符串:从地址到借用范围 / Arrays, Pointers, and Strings

引用、const 与类型推导:从复制到借用 / References, const, and Type Deduction

让数据说清楚自己:枚举、结构体、联合体与类型别名 / Enums, Structs, Unions, and Aliases

一个头文件怎样影响整个程序:预处理、头文件与命名空间 / Preprocessor, Headers, and Namespaces

基础 I/O、错误与调试:让程序会观察自己的失败 / Basic I/O, Errors, and Debugging

面向对象与对象模型 / OOP & Object Model

C++ 面向对象与对象模型总览 / C++ Object-Oriented Programming Overview

类、对象、this 与对象模型 / Classes, Objects, this, and Object Model

构造、析构与对象生命周期 / Construction, Destruction, and Object Lifetime

static、类级状态与存储期 / static Members and Storage Duration

封装、组合与继承 / Encapsulation, Composition, and Inheritance

虚函数、虚析构与运行时多态 / Virtual Functions and Runtime Polymorphism

特殊成员函数、拷贝与移动 / Special Member Functions, Copy, and Move

多重继承、虚继承与菱形问题 / Multiple and Virtual Inheritance

RTTI、类型转换与类型擦除 / RTTI, Casts, and Type Erasure

设计原则、模式与多态选择 / Design Principles, Patterns, and Polymorphism Choices

内存管理 / Memory Management

C++ 内存管理总览:先看完整地图 / C++ Memory Management Map

程序内存布局:内存不是只有堆和栈 / Program Memory Layout

栈与函数调用:局部变量为什么会消失 / Stack and Function Calls

堆与动态分配:new 到底做了什么 / Heap and Dynamic Allocation

对象生命周期:地址还在不代表对象还活着 / Object Lifetime

RAII 与所有权:让对象负责清理 / RAII and Ownership Design

智能指针与所有权关系:谁拥有,谁只是看 / Smart Pointers and Ownership Graphs

容器、迭代器与内存失效 / Containers, Iterators, and Invalidation

allocator 与 PMR:把分配策略抽出来 / Allocators and PMR

内存错误与 Sanitizer:把崩溃变成证据 / Memory Errors and Sanitizers

现代 C++ / Modern C++

现代 C++ 总览:不是特性清单,而是表达能力 / Modern C++ Overview

移动、转发与值类别:std::move 为什么不移动 / Move, Forward, and Value Categories

类型推导、初始化与 constexpr / Type Deduction, Initialization, and constexpr

模板、实例化与 SFINAE / Templates, Instantiation, and SFINAE

concept 与约束:把模板要求写在接口上 / Concepts and Constraints

异常、RAII 与 noexcept:失败路径也要清理 / Exceptions, RAII, and noexcept

lambda、捕获与生命周期:回调不是免费午餐 / Lambdas, Captures, and Lifetime

callable wrapper 与 std::invoke:怎样保存和调用行为 / Callable Wrappers and std::invoke

词汇类型与错误建模:让接口自己说话 / Vocabulary Types and Error Modeling

协程与异步抽象:先理解状态机 / Coroutines and Async Abstractions

STL 与泛型编程 / STL & Generic Programming

STL 与泛型编程路线 / STL And Generic Programming Roadmap

容器与所有权模型 / Containers And Ownership Model

迭代器、Range 与 View 模型 / Iterator, Range, And View Model

算法与 Ranges 管道 / Algorithms And Ranges Pipelines

模板、Traits 与 Concepts:面向库设计的泛型约束 / Templates, Traits, And Concepts For Library Design

可调用对象、函数对象与定制点 / Callables, Function Objects, And Customization

Allocator、PMR 与容器内存资源 / Allocators, PMR, And Container Memory

STL 调试、性能与实践项目 / STL Debugging, Performance, And Practice

并发编程 / Concurrency

C++ 并发路线 / C++ Concurrency Roadmap

线程、任务与生命周期 / Threads, Tasks, and Lifetimes

C++ 内存模型与原子操作 / The C++ Memory Model and Atomics

锁、条件变量与并发不变量 / Locks, Condition Variables, and Invariants

Future、Promise 与 Async / Futures, Promises, and Async

线程池、背压与协作取消 / Thread Pools, Backpressure, and Cancellation

无锁边界、性能与诊断 / Lock-Free Boundaries, Performance, and Diagnostics

C++ 并发综合复习 / C++ Concurrency Review

系统与网络编程 / Systems & Networking

系统与网络编程路线 / Systems and Network Programming Roadmap

进程、fork/exec、wait 与信号 / Processes, fork/exec, wait, and Signals

文件描述符、I/O、mmap 与资源所有权 / File Descriptors, I/O, mmap, and Resource Ownership

IPC、调度与虚拟内存边界 / IPC, Scheduling, and Virtual Memory Boundaries

Socket API、TCP 与连接模型 / Socket API, TCP, and Connection Model

非阻塞 I/O、epoll 与 Reactor / Nonblocking I/O, epoll, and Reactor

协议分帧、HTTP 基础与服务加固 / Protocol Framing, HTTP Basics, and Service Hardening

系统网络调试与生产检查表 / System and Network Debugging and Production Checklist

构建、测试与 ABI / Build, Testing & ABI

C++ 工程构建质量、ABI 与发布证据路线 / C++ Build Quality, ABI, and Release Evidence Roadmap

工程级 CMake Target 设计规范 / Engineering Modern CMake Target Design

测试、静态分析与 Sanitizer 门禁 / Testing, Analysis, and Sanitizer Gates

包、ABI 与性能证据总账 / Packaging, ABI, and Performance Evidence Ledger

链接诊断、库边界与符号证据 / Link Diagnostics, Library Boundaries, and Symbol Evidence

ABI 边界与兼容策略 / ABI Boundaries and Compatibility Policy

依赖、CI、制品与发布流程 / Dependencies, CI, Artifacts, and Release Flow

工程构建综合复习:发布 Mesh::Core / Engineering Build Review: Releasing Mesh::Core

Qt 与可视化 / Qt & Visualization

Qt 6 与科学可视化路线 / Qt 6 and Scientific Visualization Roadmap

信号槽机制深度解析 / Qt Signals and Slots in Depth

对象树与内存管理 / QObject Trees and Memory Management

CAE开发常用核心API实战 / Essential Qt APIs for CAE Development

Model/View架构与CAE数据处理 / Model-View Architecture and CAE Data Processing

多线程与求解器集成 / Multithreading and Solver Integration

CAE软件架构实战模式 / Practical Architecture Patterns for CAE Software

3D可视化与交互 / Interactive 3D Visualization

实战案例:从零拆解一个FEA前后处理器 / Building an FEA Pre- and Post-Processor from Scratch

插件系统 / Plugin Systems

插件工程:可演进的模块边界 / Plugin Engineering and Evolvable Module Boundaries

运行时动态加载:LoadLibrary 与 dlopen —— 打开插件的大门 / Runtime Dynamic Loading with LoadLibrary and Dlopen

插件接口设计:C ABI、函数表与受控 C++ 接口 / Plugin Interface Design with C ABI, Function Tables, and Controlled C++ Interfaces

CMake 构建完整插件项目 / Building a Complete Plugin Project with CMake

插件架构设计模式:发现、生命周期、依赖与通信 / Plugin Architecture Patterns for Discovery, Lifecycle, Dependencies, and Communication

跨平台插件开发:Windows / Linux / macOS 统一策略

插件热加载与版本管理 / Plugin Hot Reloading and Version Management

插件安全:沙箱、进程隔离与权限控制 / Plugin Security with Sandboxing, Process Isolation, and Permissions

工业软件插件系统案例分析 / Industrial Software Plugin System Case Study

综合实战:版本化 C ABI 插件系统 / Full Project: Versioned C ABI Plugin System

环境、工具链与构建系统 / Environment & Toolchain

C++ 环境与工具链总览 / C++ Environment And Toolchain Overview

开发环境:一条命令背后的工作现场 / Development Environment

编译器工具链:GCC、Clang、MSVC、MinGW 与 clang-cl / Compiler Toolchains

预处理和翻译单元:include、宏、条件编译与编译输入 / Preprocessing And Translation Unit

目标文件、符号和 ABI:.o/.obj 里到底有什么 / Object Files, Symbols, And ABI

链接、静态库、动态库和运行库 / Linking, Static Libraries, Dynamic Libraries, And Runtime

构建执行器:Make、Ninja、MSBuild 与增量构建 / Build Executors

构建生成器和 CMake:从项目描述到构建图 / Build Generators And CMake

依赖管理:三方库、包管理器和路径边界 / Dependency Management

调试和诊断:从失败现象回到工程阶段 / Debugging And Diagnostics

平台、发布和复现:让 C++ 程序离开你的机器 / Platform, Release, And Reproducibility

本页目录

C++ 完整知识体系 / Complete C++ Knowledge System ​

先别背 ISO C++ 和 ABI:你迟早会撞上这四个问题 ​

假设你已经会写循环、函数和简单类。现在项目开始变大,你很快会遇到一些“代码看起来没错,但就是不工作”的场景:

text
问题 1:main.cpp 能编译,math.cpp 也能编译,为什么放到一起却链接失败?

问题 2:virtual 是 C++ 关键字,为什么换编译器后插件可能无法加载?

问题 3:std::thread 属于标准库,为什么线程调度和文件 I/O 还要看操作系统?

问题 4:Qt 号称跨平台,为什么 QObject 跨线程、插件和窗口关闭仍然会出错?
1
2
3
4
5
6
7

这四个问题不是四套互不相关的知识。它们说明一段 C++ 程序同时生活在几个世界里:

text
你写下的 C++ 代码
    |
    +--> 语言规则:对象何时存在、表达式是什么意思
    |
    +--> 编译器与二进制:名字怎样变成符号、函数怎样调用
    |
    +--> 操作系统:线程怎样调度、文件和 Socket 怎样工作
    |
    +--> 框架:Qt 怎样投递事件、管理对象和刷新界面
1
2
3
4
5
6
7
8
9

后面的 ISO C++、ABI、POSIX、Qt 只是这四层的正式名字。先看到问题,再记名字,会轻松很多。

一个两分钟实验:每个文件都能编译,程序仍然可能不存在 ​

创建 math.cpp:

cpp
int add(int a, int b) {
    return a + b;
}
1
2
3

创建 main.cpp:

cpp
#include <iostream>

int add(int, int);

int main() {
    std::cout << add(20, 22) << '\n';
}
1
2
3
4
5
6
7

先分别编译:

bash
g++ -std=c++17 -c main.cpp -o main.o
g++ -std=c++17 -c math.cpp -o math.o
1
2

两个命令都成功。此时只有两个目标文件,还没有最终程序。故意只链接 main.o:

bash
g++ main.o -o app
1

预期看到类似结果:

text
undefined reference to `add(int, int)'
1

再把 math.o 交给链接器:

bash
g++ main.o math.o -o app
./app
1
2

预期输出:

text
42
1

刚才发生的事情很重要:

text
编译器只需要知道 add 的声明,就能生成 main.o
链接器必须找到 add 的定义,才能生成 app
1
2

这就是为什么 C++ 不能只学语法。函数声明属于源码层,符号解析发生在链接层,最终二进制还要遵守平台 ABI。

这一节先记住

一段源码“语法正确”,不代表整个程序已经正确。C++ 工程至少要经过编译、链接和运行三个不同边界。

暂时不用记

名字修饰规则、ELF/PE 格式、重定位类型和 Itanium/MSVC ABI 细节现在不用背。先记住:它们解释二进制为什么能够互相找到并调用。

C++ 大区围绕一条工程主线组织:先理解对象、类型和编译模型,再建立生命周期与所有权意识,最后进入泛型、并发、平台 API、构建和大型应用架构。

全区以 C++17 为基础版本;C++20/23 特性会在正文单独标注。示例中的“通常”“主流 ABI”是在区分语言保证与实现事实。

现在再给四层正式命名 ​

前面的链接实验落在“实现与 ABI”层;add 的声明和函数调用语义由语言规则约束;如果它读取文件,就进入操作系统接口;如果结果显示在 Qt 窗口,还要遵守框架事件和线程规则。

层次负责什么典型内容可移植性结论
ISO C++语言与标准库的可观察行为对象生命周期、虚函数语义、容器、线程、原子符合相应标准的实现都应满足,但仍有未定义/实现定义行为
实现与 ABI编译后二进制契约vptr/vtable、名字修饰、调用约定、布局、符号、异常 ABI依赖编译器、版本、目标平台和构建选项
POSIX / Linux操作系统接口fork、文件描述符、信号、Socket、epoll、mmap不属于 ISO C++;Windows 需要不同 API 或兼容层
Qt 6跨平台应用框架契约元对象、信号槽、对象树、事件循环、Model/View依赖 Qt 版本、模块、平台插件和线程规则
text
source code
    |
    +--> ISO C++ rules -------------------- portable language behavior
    +--> compiler + ABI ------------------- object layout / symbols / calls
    +--> operating-system API ------------ process / file / socket / epoll
    +--> framework contract -------------- Qt event and object model
1
2
3
4
5
6

回答技术问题时按“语言规定 → 常见实现 → 工程选择”展开,可以避免把某台机器上的观察误当成 C++ 标准。

总学习地图 ​

text
01 语言基础与编译模型
       |
02 类、对象与面向对象
       |
03 生命周期、RAII 与所有权
       |
04 现代 C++、模板与错误模型
       |
05 STL、算法与泛型契约
       |
06 并发与内存模型
       |
07 POSIX/Linux 系统与网络
       |
08 CMake、链接、测试、ABI 与发布
       |
09 Qt、可视化与 CAE 架构
       |
10 插件工程(独立工程专题)
       |
11 环境、工具链与构建系统
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

用一条对象生命线串起整个 C++ 大区 ​

目录看起来分成语法、面向对象、内存、现代 C++、STL 和并发,但它们共同研究的是:程序如何创建对象、让对象参与计算、在多个边界间传递对象,最后安全结束生命周期。

cpp
auto document = std::make_unique<Document>(load(path));
worker.submit([doc = std::move(document)] {
    doc->process();
});
1
2
3
4

这一小段代码同时要求理解:

text
load(path)
   |
   +--> I/O 与错误传播
   +--> 返回值与复制消除/移动
   |
   v
构造 Document
   |
   +--> 类不变量与构造失败
   +--> make_unique 与独占所有权
   |
   v
lambda 按移动捕获
   |
   +--> 闭包对象布局与生命周期
   +--> document 进入 moved-from 状态
   |
   v
提交到 worker
   |
   +--> 线程间同步与任务所有权
   +--> 取消和关闭协议
   |
   v
任务结束 -> 闭包销毁 -> unique_ptr 销毁 -> Document 析构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

如果只会每个 API 的写法,就无法判断异常发生时资源是否泄漏、任务队列关闭后对象是否仍存活、捕获引用是否悬空。课程按依赖顺序展开,正是为了最终能沿这条生命线解释完整程序。

C++ 难学的三个根本原因 ​

同一语法跨越不同抽象层 ​

virtual 的语义由语言标准描述,vtable 属于常见 ABI 实现;std::thread 是标准库抽象,最终调度由操作系统完成;QObject 则遵守 Qt 的对象与线程规则。回答问题时混淆层次,就会把“常见”误写成“必然”。

性能与控制能力带来更多有效状态 ​

C++ 允许值、引用、指针、借用视图、独占和共享所有权并存,也允许栈、动态存储、内存映射和自定义分配器。工具越多,接口越必须明确谁负责销毁以及哪些状态合法。

工程正确性跨越翻译和运行边界 ​

一个程序可能在每个 .cpp 单独编译正确,却因 ODR、链接选项或 ABI 组合失败;也可能测试单线程正确,却因缺少 happens-before 在并发运行时出错。

text
局部源码正确
   |
   +--> 翻译单元能编译?
   +--> 所有目标能链接?
   +--> ABI 与运行库兼容?
   +--> 对象生命周期正确?
   +--> 并发顺序有保证?
   +--> 部署环境依赖齐全?
1
2
3
4
5
6
7
8

所以课程不会只讲语法规则,还会一直追到工具链、运行时和工程边界。

判断“真正理解”的四级标准 ​

层级能力例:虚函数
识别知道语法和名词能写 virtual、override
解释能说明语言行为通过基类引用调用时可动态绑定
推导能从对象模型分析边界构造/析构期间派发、对象切片、虚析构
设计能在工程中取舍继承、多态、variant、type erasure 如何选择

每篇文章的目标至少达到“推导”,核心专题还要达到“设计”。面试速答只是压缩后的出口,不应代替前面的完整推理。

阅读任何 C++ 代码的统一检查表 ​

  1. 当前名字代表值、对象、引用、类型还是函数?
  2. 相关对象从何时存在,到何时销毁?
  3. 谁拥有资源,谁只是借用,借用会不会逃逸?
  4. 失败发生后,哪些状态已经改变,析构能否完成清理?
  5. 多态发生在编译期还是运行期,代价与边界是什么?
  6. 多线程之间通过什么同步建立可见性?
  7. 结论来自 ISO C++、ABI、操作系统还是框架契约?
  8. 当前设计是否把错误尽量提前到编译或构造边界?

带着这些问题学习,知识点会围绕对象生命线相互连接,而不再是一堆需要反复背诵的孤立结论。

三条学习路线 ​

路线 A:零基础系统学习 ​

严格按 01 → 09 顺序。语言基础阶段先能解释作用域、生命周期、数组退化和编译/链接错误;随后再学习虚函数、RAII、模板和并发。不要在不理解对象生命周期时直接背智能指针和线程口诀。

阶段验收顺序:

  1. 写出无警告的 C++17 小程序;
  2. 用类维护不变量,并正确解释复制、移动和析构;
  3. 使用容器、算法和 RAII,不依赖手写 owning new/delete;
  4. 能从 happens-before 分析并发正确性;
  5. 能 configure/build/test/install 一个 CMake 工程;
  6. 再进入 POSIX/Linux 或 Qt 等平台方向。

路线 B:面试复习 ​

先读每个模块的 overview 与“面试速答”,再回到对应原理章节:

text
语言基础高频题
  -> OOP:三大特性 / override / 虚函数 / vtable / 深浅拷贝
  -> 内存:生命周期 / RAII / 智能指针 / 内存错误
  -> 现代 C++:值类别 / 模板 / 异常 / lambda
  -> STL:复杂度 / 失效 / 算法 / allocator
  -> 并发:data race / happens-before / 锁 / atomic
  -> 工程:编译链接 / CMake / 动态库 / ABI
1
2
3
4
5
6
7

每题采用 20–40 秒定义,再补“成立条件、底层边界、常见错误、何时使用”。例如回答 vtable 时必须主动说明:动态派发行为由 ISO C++ 规定,vptr/vtable 是主流 ABI 实现机制。

路线 C:工程实践 ​

先完成 01–05 的主线,再按目标分支:

  • 服务端/基础设施:06 → 07 → 08;
  • 桌面与工业软件:06 → 08 → 09;
  • 动态扩展平台:08 → 10,并按宿主类型补 07 或 09;
  • 性能工程:完成 03、05、06、08 后,再进入系统与高性能。

工程路线始终围绕四个问题:谁拥有资源、失败怎样传播、并发怎样关闭、二进制怎样兼容。

权威专题索引 ​

01. 语言基础 ​

入口:语言基础概览 · 完整学习指南

  • 编译、链接与 ODR
  • 类型、变量与初始化
  • 表达式、运算符与控制流
  • 函数、作用域与重载
  • 数组、指针与字符串
  • 引用、const 与类型推导
  • 枚举、结构体、联合体与别名
  • 预处理、头文件与命名空间
  • 基础 I/O、错误与调试

02. 面向对象与对象模型 ​

入口:面向对象概览

  • 类、对象与对象模型
  • 构造、析构与生命周期
  • static、存储期与类级状态
  • 封装、组合与继承
  • 虚函数、纯虚函数、vtable 与运行时多态
  • 特殊成员函数与深浅拷贝
  • 多重继承、虚继承与菱形问题
  • RTTI、转换与类型擦除
  • SOLID、设计原则与模式

03. 内存管理 ​

入口:现代 C++ 内存管理主线

  • 程序内存布局:内存不是只有堆和栈
  • 栈与函数调用
  • 堆与动态分配
  • 对象生命周期
  • RAII 与所有权接口
  • 智能指针与所有权图
  • 容器、迭代器与内存失效
  • allocator、PMR 与资源生命周期
  • 内存错误与 Sanitizer

04. 现代 C++ ​

入口:现代 C++ 概览

  • 值类别、移动与完美转发
  • 类型推导、初始化与常量求值
  • 模板实例化、特化与 SFINAE
  • C++20 Concepts 与约束
  • 异常、RAII 与 noexcept
  • lambda、捕获与生命周期
  • 可调用包装器与 invoke
  • 词汇类型与错误建模
  • C++20 协程与异步抽象

05. STL 与泛型编程 ​

入口:STL 知识地图 · 综合复盘与实践

  • 容器与所有权模型
  • 迭代器、区间与 view 模型
  • 算法与 ranges 管线
  • 模板、traits 与 concepts
  • callable、函数对象与定制点
  • allocator、PMR 与容器内存

06. 并发编程 ​

入口:并发知识地图 · 综合复习

  • 线程、任务与生命周期
  • 内存模型与原子操作
  • 锁与条件变量
  • future、promise 与 async
  • 线程池、背压、取消与关闭
  • 无锁边界、性能与诊断

07. 系统与网络编程 ​

入口:系统与网络编程路线

  • 系统主线:进程、fork/exec、wait 与信号 · 文件描述符、I/O、mmap 与资源所有权 · IPC、调度与虚拟内存边界
  • 网络主线:Socket API、TCP 与连接模型 · 非阻塞 I/O、epoll 与 Reactor · 协议分帧、HTTP 基础与服务加固 · 系统网络调试与生产检查表

08. 构建、工具链与 ABI ​

入口:构建与 ABI 概览 · 工程综合路线

  • 现代 CMake target
  • 测试、分析与 Sanitizer
  • 打包、ABI 与性能证据
  • 链接器、库与符号
  • ABI 边界与兼容性
  • 依赖、CI、打包与发布

09. Qt 与科学可视化 ​

入口:Qt 与可视化概览 · Qt/C++ 主线

  • 主课程:信号槽 · 对象树与内存 · Core API · Model/View · 多线程 CAE · CAE 架构 · 3D 可视化 · 完整案例
  • 契约专题:Qt 6 版本与编码 · 元对象与连接 · QObject 生命周期与线程亲和性 · 数据 I/O 与序列化 · Model/View 正确性 · 线程取消与关闭 · 插件 ABI 与 Document 架构 · 渲染资源生命周期 · 生产级 CAE 检查表

10. 插件工程 ​

插件工程入口独立处理静态/动态链接、运行时装载、接口、热重载、跨平台和安全。学习前至少完成对象模型、所有权、CMake 和 ABI 专题;“纯虚接口”或“能被 QPluginLoader 发现”都不等于 ABI 自动稳定。

11. 环境、工具链与构建系统 ​

入口:C++ 环境、工具链与构建系统总览

  • 开发环境与工具入口
  • 编译器工具链:GNU、MSVC、MinGW、Clang
  • 预处理与翻译单元
  • 目标文件、符号与 ABI
  • 链接:静态库、动态库与运行时
  • 构建执行器:Make、Ninja 与并行调度
  • 构建生成器与 CMake target
  • 三方库与依赖管理
  • 调试、诊断与 Sanitizer
  • 平台发布与可复现构建

如何使用这套内容 ​

  1. 初学时按顺序运行完整示例,并主动修改一处制造编译、链接或运行时错误;
  2. 复习时先遮住“面试速答”和自测答案,用自己的话复述;
  3. 工程中遇到问题时按边界定位:语言规则、ABI、操作系统还是 Qt;
  4. 性能结论必须来自目标工具链和工作负载测量;
  5. 跨库、跨线程和异步接口必须同时写清所有权、错误与关闭协议。

从零开始请进入语言基础概览;已有基础、以高频题复习为目标,可直接进入面向对象与对象模型。

最后更新于:

Pager
下一篇C++ 语言基础完整学习手册 / Complete C++ Language Basics Guide

持续记录,持续成长

Copyright © Tidenflow