当前播放: C++中为什么move constructor需要加noexcept?
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
合辑:新版短视频
如何优化深度学习数据读取?
如何通过自动化测试技术来提升服务端系统质量?
Kubernetes下如何基于拓扑结构来调度?
如何通过Jenkins快速实现一个持续集成流水线?
当小内存遇上大数据
2019年必学的DevOps流行工具
Kafka某台broker IO阻塞,为何会导致发送方无法发送消息?
什么是C++中的The Rule of Three?
基于时序特性,如何构建一个时序存储引擎?
如何利用反射和泛型编程让你的Java代码更优雅?
C++中为什么move constructor需要加noexcept?
如何使用Postman做接口自动化测试?
给你点“颜色”瞧瞧
如何用Spark实现一个通用大数据计算引擎?
如何让你的Robot Framework飞起来?
如何透彻理解Selenium和WebDriver?
Spring Data JPA 如何进行复杂动态查询?
Spring Data JPA如何实现动态部分更新?
未来的编程语言长什么样?
高并发场景下锁的使用技巧(悲观锁/乐观锁/分布式锁)
为什么React组件要声明key?
为什么React不推荐使用Mixin?
如何设计一个高可用的配置中心?
如何通过代码技巧提升内存使用效率?
如何全面地改造Robust?
如何基于Netty构建一个简单的RPC服务?
Spring Boot中如何使用HTTP/2?
教你10分钟玩转Gradle plugin
如何深入理解Kube-Proxy?
如何深入理解Kubernetes架构?
如何使用和优化iOS中的WebView?
一个1000万资金重复支付的代码剖析
如何实现数据异构的多级缓存策略?
如何从 CRD 扩展开发切入Kubernetes源码学习?
如何更轻松简单地从源码编译部署Kubernetes?
如何设计并实现一个高可用的订单系统?
ZooKeeper的ZAB算法与Paxos的本质区别是什么?
微服务框架Apache ServiceComb的设计思想有哪些?
如何深入理解分布式事务TCC实现原理?
SSR 、CSR、预渲染、同构等首屏优化技术要如何选择?
如何利用ClassPath解决Java开发工程问题?
如何读懂Babel转换出的JavaScript代码?
大厂前端面试中经常提到的Promise要如何实现?
使用 Vue 开发小程序是怎么做到的?
为什么CSS要放在header底部,JavaScript要放在body底部?
前端Router是怎么实现的?
如何理解现代发布策略?以Kubernetes为例
JavaScript中如何封装一个具有自动失败重试功能的HTTP模块?
JavaScript中如何优雅地实现函数防抖?
服务发现技术是如何演进出来的?

C++中为什么move constructor需要加noexcept?

于航 PayPal 高级软件工程师

相信对 C++ 语言熟悉的同学应该都知道,C++ 在它的第 11 个版本中,加入了新的名为“移动构造函数”的构造函数类型。通过使用移动构造函数,我们可以在对象进行“复制”时,直接“窃取”拷贝对象所保有的一些资源。但在大多数情况下,当我们在代码中声明类的移动构造函数时,都通常会使用 “noexcept” 关键字来修饰对应的移动构造函数,那这样做是为什么?或者说这样做有哪些好处呢?

讲师介绍

于航,PayPal 高级软件工程师,FCC (FreeCodeCamp China) 上海技术社区负责人, QCon、GMTC 大会讲师,WebAssembly 技术布道者。2017 年注册成为 W3C 官方 CG(Community Group)成员,2018 年出版了《深入浅出 WebAssembly》,是国内第一本 Wasm 技术书,为推动国内 Wasm 技术发展和落地实践做出了一定贡献。

展开
¥4.99 购买
开通VIP
11
登录 后留言

精选留言(5)

  • 荷马
    于老师最棒棒~
    2019-12-07
    2
  • 胡佳朋
    求出个c++ 全点的视频啊

    编辑回复: 你可以看看吴老师那个C++专栏。

    2019-12-20
  • 阿阳
    老师讲的太棒了。强烈呼吁老师多出点c++视频,基础加深度,比如stl与数据结构知识。

    作者回复: hh谢谢 会考虑的

    2019-12-13
  • robonix
    老师,最后提到的三个convention,
    1. 禁止使用拷贝构造函数
    2. 禁止拷贝赋值函数
    3. 使用placement new
    都各有什么好处呢?

    作者回复: 其实这几个一起看就行,我这里说的只是从我的角度来看,毕竟C++语言细节复杂使用方式也各种各样,所以仅供参考。其实这三个convention主要就是为了减少不必要的对象拷贝过程,用移动或者in-place生成来代替拷贝构造进而提高性能,但现代编译器都会有各种优化手段比如RVO和NRVO,不一定这么做就会提高性能,但如果团队协作的话可以作为一种规范,毕竟没有坏处。BTW,这里的“禁止”要看具体的类和场合,也不能一概而论。

    2019-12-11
  • hdongdong123
    移动构造函数是需要我们自己写么?

    作者回复: 在满足一定条件(没有用户定义的拷贝构造函数、拷贝赋值、移动赋值以及析构函数)的时候会自动生成 implicitly-declared 的移动构造函数。当然细节比较多可以看下cppreference上的语言规范。

    2019-12-10
收起评论
其他推荐
36:19
Go工程项目实践
毛剑 bilibili数据平台部技术总监
免费
47:11
Golang 内存管理探微——如何高效使用 Golang 内存以及腾讯云实战
杨晖 腾讯教育云技术负责人
试看
44:54
用 Clojure 改善 Java 项目的开发体验
刘鑫 布路诺超链交易所高级技术经理Python Tutorial译者
试看