C++ 介绍
什么是 C++
一门比较流行的编程语言
C 语言的扩展
- 关注性能
- 与底层硬件紧密结合
例如:
在大小端层面,c++ 不做规定,与硬件保持一致;而 Java 等语言会规定大小端。
- 对象生命周期的精确控制
左图是 C++,由于对对象生命周期的精确控制,可以确保在 throw 之后,对象被销毁;
右图是 C#,由于对象生命周期无法精确控制,在对象打开某个资源之后,可能无法及时释放,所以需要在 Finally 之后释放资源。
-
Zero-overhead Abstraction
-
不需要为没有使用的语言特性付出成本
-
虚函数(没有使用虚函数,就不需要付出额外的代价;而 C# 等语言则是默认继承 object);
-
godbolt.org/z/fq66hM (可以选择在堆上分配,也可以选择在栈上分配)。
-
-
使用了一些语言特性不等于付出运行期成本
- godbolt.org/z/Pv9bWj (付出编译期的成本)
-
-
引入大量特性,便于工程实践
-
三种编程范式:面向过程、面向对象、泛型
-
函数重载、异常处理、引用
-
一系列不断衍进的标准集合
-
C++98/03,C++11,C++14,C++17,C++20,C++23 ?
-
语言本身的改进
-
Memory Model
-
Lambda Expression
-
-
标准库的改进
-
type_traits / ranges
-
auto_ptr
-
C++ 标准的工业界实现
-
MSVC/GCC/Clang ...
-
每个编译器可能并不完全遵照标准
-
不同的实现存在差异
不能脱离具体的语境讨论 C++
编写程序时要注重
-
性能
-
标准