溜撒点一起上吧
- 知识点手册查询
- 介绍
- 版本
- IDE
- Linux中的C++编译器
- 关键字
- 标准输入输出 cout、cin
- 数据类型
- 命名空间
- 语句块
- new 的使用
- 引用 &
- 共用体union
- Ubuntu C++程序中执行shell命令
- #include<> 和 #include" "
- gcc/g++编译C++程序时常用的环境变量有哪些?
- VSCode 中F12无法打开#include中的头文件
- malloc分配内存与直接定义变量的区别
- 堆、栈、静态存储区的区别
- 函数模板、类模版、变量模版
- constexpr 和 const 的区别
- 内联变量 inline
- 常用的标准库函数
- AI助手
- 左值和右值
- 结构体
- 友元函数、友元类、友元
- 函数重载、运算符重载
- 阻塞、非阻塞、同步、异步
本篇小编采用查漏补缺、拾遗形式的记录方式,职场虐我千百遍,唯C++待我如初恋,QAQ,我们开始吧,好记性不如烂笔头,书山有路勤为径,学海无涯苦作舟!
知识点手册查询
介绍
四大特性:
- 封装(Encapsulation):封装是将数据和方法组合在一起,对外部隐藏实现细节,只公开对外提供的接口。这样可以提高安全性、可靠性和灵活性。
- 继承(Inheritance):继承是从已有类中派生出新类,新类具有已有类的属性和方法,并且可以扩展或修改这些属性和方法。这样可以提高代码的复用性和可扩展性。
- 多态(Polymorphism):多态是指同一种操作作用于不同的对象,可以有不同的解释和实现。它可以通过接口或继承实现,可以提高代码的灵活性和可读性。
- 抽象(Abstraction):抽象是从具体的实例中提取共同的特征,形成抽象类或接口,以便于代码的复用和扩展。抽象类和接口可以让程序员专注于高层次的设计和业务逻辑,而不必关注底层的实现细节。
版本
- C++11
2011年发布;
文言一心:C++11主要特性有哪些?
主要特性:- 自动类型
auto
- 基于范围的
for
循环:for(auto& elem : container) { /* 使用elem */ } - 右值引用和移动语义;
- 初始化列表:std::vector v = {1, 2, 3, 4, 5};
Lambda
表达式:auto lambda = [](int x, int y) { return x + y; };- 类型推导
decltype
decltype关键字用于在编译时推导表达式的类型:decltype(a + b) c;
// c的类型与a + b的结果类型相同; - 默认和删除的成员函数
允许显式地声明特殊成员函数(如构造函数、析构函数、拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符)的默认行为(使用= default)或禁止其自动生成(使用= delete)。
示例:MyClass() = default; MyClass(const MyClass&) = delete; - 空指针
nullptr
以替代旧的NULL
宏。nullptr具有明确的类型(std::nullptr_t)。 - 其他重要特性
…
- 自动类型
- C++14
2014年发布;
文言一心:C++14主要特性有哪些?
主要特性:- Lambda表达式增强
捕获列表中直接初始化变量:auto func = [y = 2]() { return y * 2; };
- constexpr函数增强;
- 废弃标志
[[deprecated]]
标记已弃用的函数、类或其他声明;
在编译时提醒开发者不应再使用某个已标记为过时的API.//为oldFunction函数定义一个“deprecated”属性 [[deprecated("this function will be removed in v2.0")]] void oldFunction() { // ... }
- 读写锁
std::shared_timed_mutex
和std::shared_lock
C++14扩展了线程支持库,引入了std::shared_timed_mutex作为新的互斥量类型,它支持共享(读)锁定和独占(写)锁定。同时,新增了std::shared_lock类模板,作为一个便捷的共享锁管理器,提供了对std::shared_timed_mutex以及其他兼容锁类型的隐式锁定和解锁操作。 - 变量模板
变量模板用法类似于函数模版;//定义一个变量模版 template<typename T> T pi = T(3.14159); //使用这个变量模版(实例化变量模版) auto myPi = pi<double>; // myPi的类型是double,值为3.14159 auto myPiInt = pi<int>; // myPiInt的类型是int,值将被截断为3
- 其他新特性…
- Lambda表达式增强
- C++17
2017年发布;
文言一心:C++17主要特性有哪些?
主要特性:- Lambda表达式增强,C++17允许直接捕获
*this
作为值; - 类型推导改进;
- 结构化绑定;
- 标准库新增类型;
- 文件系统库;
constexpr if
;- 折叠表达式;
- 内联变量
inline
; - 其他改进和新增…
- Lambda表达式增强,C++17允许直接捕获
- C++20
2020年发布;
文言一心:C++20主要特性有哪些?
主要特性:- 模块(Modules)
背景:在C++中,传统的#include机制用于包含头文件,但这种方式存在效率低下、编译速度慢、依赖关系复杂等问题。
新特性:C++20引入了模块的概念,作为对传统#include机制的一种改进。模块允许开发者将声明和定义封装在一个单独的文件中,并在其他文件中通过import语句来引用这些声明和定义。这可以显著提高编译速度,减少编译次数,并改善代码的组织方式。 - 协程(Coroutines)
概念:协程是一种特殊的函数,它可以在执行过程中暂停和恢复,而不会像传统函数那样一直执行到结束。C++20通过引入co_await、co_yield和co_return三个关键字来支持协程。这使得开发者能够以同步的方式编写异步代码,从而提高代码的可读性和可维护性。协程在编写网络编程、图形界面应用等需要异步处理的场景中特别有用。 - 概念(Concepts)
背景:在C++中,模板编程是一种强大的特性,但模板参数的类型约束往往需要在模板体内通过复杂的逻辑来实现。C++20引入了概念(Concepts),它是一种用于描述模板参数必须满足的条件或特性的机制。通过概念,开发者可以在模板声明时直接指定参数的类型约束,从而提高模板的易用性和安全性。 - 范围(Ranges)
背景:在C++中,算法通常与迭代器一起使用来操作容器中的数据。然而,迭代器的使用方式较为繁琐,且不够直观。C++20引入了范围(Ranges)库,它提供了一种更简洁、更直观的方式来使用算法。范围库允许开发者直接对容器或容器的一部分进行操作,而无需显式地使用迭代器。此外,范围库还提供了丰富的组合操作符,使得算法的组合更加灵活和强大。 - 三向比较运算符(Three-way Comparison)
背景:在C++中,比较运算符(如<
、>
、==
等)通常用于比较两个对象的值。然而,对于自定义数据类型来说,需要手动实现这些运算符,这既繁琐又容易出错。C++20引入了三向比较运算符(<=>),它是一个重载的运算符,用于同时实现<、>和==等比较运算。通过三向比较运算符,开发者可以更方便地实现自定义类型的比较操作,并自动生成所有相关的比较运算符。 - 其他新特性
日期和时间库(Date and Time):C++20对日期和时间处理进行了增强&
- 模块(Modules)