c11部分新特性

一、c11部分新特性

智能指针

智能指针作用:

C++程序设计中使用堆内存是非常频繁的操作,使用普通指针容易造成内存泄漏、二次释放等问题。C++11中引入了智能指针的概念。智能指针就是帮我们C++程序员管理动态分配的内存的,它会帮助我们自动释放new出来的内存,从而避免内存泄漏
为什么智能指针可以像普通指针那样使用???
因为其里面重载了 * 和 -> 运算符, * 返回普通对象,而 -> 返回指针对象。

auto_ptr:

auto_ptr 是c++ 98定义的智能指针模板,可以将new 获得(直接或间接)的地址赋给这种对象。当对象过期时,其析构函数将使用delete 来释放内存!

auto_ptr 被C++11抛弃的主要原因:

a、复制或者赋值都会改变资源的所有权。
b、在STL容器中使用auto_ptr存在着重大风险,因为容器内的元素必须支持可复制和可赋值。

unique_ptr:

unique_ptr是auto_ptr的一个改良版,不能赋值也不能拷贝,保证一个对象同一时间只有一个智
能指针。

shared_ptr:

shared_ptr可以使得一个对象可以有多个智能指针,当这个对象所有的智能指针被销毁时就会自
动进行回收。(内部使用计数机制进行维护)

weak_ptr:

weak_ptr是为了协助shared_ptr而出现的,只可以从一个 shared_ptr 或另一个 weak_ptr 对象构造, 他的构造或者析构不会改变计数器,它不能访问对象,只能观测shared_ptr的引用计数,防止出现死锁。

右值引用

右值引用和左值引用的区别:
左值持久,右值短暂,左值引用绑定到有确定存储空间以及变量名的对象上,表达式结束后对象依然存在;右值引用绑定到要求转换的表达式、字面常量、返回右值的表达式等临时对象上,赋值表达式结束后就对象就会被销毁。

引入右值引用原因
替代需要销毁对象的拷贝,提高效率

lambda表达式

在这里插入图片描述
1.捕获列表。在C ++规范中也称为Lambda导入器, 捕获列表总是出现在Lambda函数的开始处。
2.参数列表。与普通函数的参数列表一致。如果不需要参数传递,则可以连同括号“()”一起省略。
3.异常说明。用于Lamdba表达式内部函数抛出异常。
4.返回类型。 追踪返回类型形式声明函数的返回类型。我们可以在不需要返回值(或者明确返回类型)的时候也可以省略。
5. lambda函数体。内容与普通函数一样,不过除了可以使用参数之外,还可以使用所有捕获的变量。

并发编程

并发与并行的区别:
并发:同一时间段内可以交替处理多个操作
并行:同一时间段内同时处理多个操作
并发的两种模式:
1.多进程并发:多个进程独立地运行,它们之间通过进程间常规的通信渠道传递讯息(信号,套接字,文件,管道等),这种进程间通信不是设置复杂就是速度慢
2.多线程并发:线程就像轻量级的进程,每个线程相互独立运行,但它们共享地址空间。在多线程编程中,我们必须确保每个线程锁访问到的数据是一致的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值