
C++新特性
文章平均质量分 92
介绍C++11、C++14、C++17和C++20新特性
一口三明治3Mz
天下大事,必作于细
展开
-
[C++11] 智能指针
由于C++中没有垃圾清理机制,分配的内存需手动释放,否则就会产生内存泄漏,C++11中引入了智能指针的概念,使用其可以有效解决该问题。智能指针是存储指向动态分配对象指针的类。使用引用计数的技术,使用一次内部引用计数 +1,每析构一次,内部引用计数 -1,减为0时,删除所指向的堆内存。使用智能指针可以确保在离开指针作用域时,自动销毁动态分配的对象,防止内存泄漏。C++11中提供了三种智能指针,包含在中:1. 共享的智能指针:std::shared_ptr。原创 2023-10-23 15:47:25 · 228 阅读 · 1 评论 -
[C++11] 原子变量与原子操作
C++11中增加的官方并发支持库包含了名为的头文件,此文件中定义了原子变量,及其各种类型特化别名等。“原子”指的是,它们组合在一起形成了原子操作(Atomic Operation)。这意味着在执行原子操作时,它要么完全成功,要么完全失败,没有中间状态,保证了操作的完整性。原子拥有的原子性确保了在并发编程中数据的一致性和可靠性。原创 2023-10-08 16:29:33 · 230 阅读 · 1 评论 -
[c++11] 右值引用
使用引用类型时要先进行初始化,因为引用类型本身不拥有绑定对象的内存,只是该对象的一个别名,所以通过右值引用的声明,就可获得该右值。需要注意的是,我们一般在提供移动构造函数的同时,也会提供常量左值引用的拷贝构造函数,以保证移动不成还可以使用拷贝构造函数。在上面代码中,move()函数并没有移动内容,而是将类型进行转换,将左值转换成右值,让右值引用指向它,里面的数据并没发生改变。所以右值引用能够指向右值,本质就是将右值变成左值,定义一个右值引用,并通过std::move()指向该左值。右值引用:实现移动语义;原创 2023-10-02 14:22:36 · 82 阅读 · 1 评论