《Effective Modern C++》第0章学习记录

2023-11-19

Acknowledgement

  • C++0x
  • C++11, C++14
  • Usenet newsgroup comp.std.c++
  • Stack Overflow
  • Overview of the New C++
  • Modern C++ Design
  • Going native
  • different blogs

Introduction

  • auto declarations
  • range-based for loops
  • lambda expressions
  • rvalue references
  • concurrency
  • nullptr
  • alias declarations
  • enums
  • smart pointer
  • moving objects
  • employ the features to create software that’s correct, efficient, maintainble, and portable

Terminology and Conventions

  • four official versions of C++
    • C++98, C++03, C++11, C++14
    • A useful heuristic to determine whether an expression is an lvalue is to ask if you can take its address.
    • move operations
      • move constructor
      • move assignment operator
    • copy operations
      • copy constructor
      • copy assignment
Widget(Widget&& rhs);
 // rhs is an lvalue, though it has an rvalue reference type
  • C++11 variadic templates
template<typename... T>
void processVals(const T&... params){}

Copies of rvalue are generally move constructed, while copies if lvalues are usually copy constructed.

  • arguments
  • parameters
  • perfect forwarding

Well-designed functions are exception safe, meaning they offer at least the basic exception safety guarantee (i.e., the basic guarantee)

  • program invariants

Functions offering the strong exception safety guarantee (i.e., the strong guarantee)

  • function object
  • non-member function
  • member function pointers
  • callable objects

Function objects created through lambda expressions are known as closures.

  • lambdas
  • function templates
  • tempate functions
  • class templates
  • template class

Declarations:

  • object declaration
  • class declaration
  • function declaration
  • scoped enum declaration

Definitions

  • object definition
  • class definition
  • function definition
  • scoped enum definition

Function’s signature

deprecates features

  • std::auto_ptr is deprecated in C++11
  • undefined behavior
    • beyond the index bounds of a std::vector
    • dereferencing an unintialized iterator
    • engaging in a data race
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《Effective Modern C++》第0章学习记录 的相关文章

随机推荐

  • paddleseg人像分割windows下实现与证照自动生成实现

    paddleseg人像分割windows下实现与证照自动生成实现 近日研究了一下用人脸识别作自动证件照生成 刚开始以为很简单不就是识别出人脸 然后按比例切出 这一步当然很简单 结果看了各种证件照 原来要去除背景的 这样一来原来简单的事搞得复
  • 虚拟计算技术

    虚拟计算的本质是资源共享 P2P计算 云计算 网格计算 普适计算都属于虚拟计算 一 概述 虚拟计算 Virtual Computing 的本质是资源共享 虚拟计算技术不仅能使人们更有效地共享现有的资源 而且能通过重组等手段 为人们提供更多
  • 这一次,我顿悟了

    大家好 我是苍何 昨晚和编程导航 星球嘉宾也是我的引路人闫 y n 小林大佬 畅聊了 4 个 小时 至今内心还是久久不能平静 小林和我一样是跨界转行 他是医学院毕业 大二开始自学编程 并写博客记录 迄今有 30 万编程学习者关注 毕业后在某
  • OSI七层模型以及各层的作用

    OSI七层模型 OSI七层模型包括 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 具体作用 物理层 主要定义物理设备标准 如网线的接口类型 各种传输介质的传输速率等 主要作用是传输bit流 主要设备 集线器 数据链路层 主要将
  • HMI智能串口屏——在STM32开发板上的实战应用及其详解

    HMI智能串口屏 在STM32开发板上的实战应用及其详解 一 HMI智能串口屏使用步骤 二 附录 一 HMI智能串口屏使用步骤 安装USART HMI软件 一般买的串口屏里面 商家送的资料里面都有改该软件 打开软件 并点击左上角的 新建 选
  • Unique Binary Search Trees -- LeetCode

    原题链接 http oj leetcode com problems unique binary search trees 这道题要求可行的二叉查找树的数量 其实二叉查找树可以任意取根 只要满足中序遍历有序的要求就可以 从处理子问题的角度来
  • 智能制造中的智能制造平台:应用案例介绍

    作者 禅与计算机程序设计艺术 智能制造中的智能制造平台 应用案例介绍 智能制造作为我国大力发展的重要战略 旨在通过改变传统制造业的生产模式 提高制造业的自主创新能力和核心竞争力 智能制造平台作为实现智能制造的核心基础 对于企业来说具有重要的
  • 春秋云镜:CVE-2019-9042(Sitemagic CMS v4.4 任意文件上传漏洞)

    一 题目 靶标介绍 Sitemagic CMS v4 4 index php SMExt SMFiles 存在任意文件上传漏洞 攻击者可上传恶意代码执行系统命令 进入题目 admin admin index php SMExt SMFile
  • .NET Core 下定时任务调度

    一 增加本地json持久化调度任务 无需数据库 1 首先 我们创建一个空白的ASP NET Core 项目 MVC Razor和WebAPI都行 如图 2 通过nuget引用最新版本的GZY Quartz MUI组件 如图 组件的项目地址G
  • hibernate与sqlserver的连接

    Hibernate是一个开放源代码的对象关系映射框架 它对JDBC进行了非常轻量级的对象封装 它将POJO与数据库表建立映射关系 是一个全自动的orm框架 hibernate可以自动生成SQL语句 自动执行 使得Java程序员可以随心所欲的
  • 【MySQL】sql给表起别名

    有时候 在对数据库中的表进行操作的时候 发现表名比较冗长 这时候我们就需要对表创建一个别名 别名的关键字为as 也可以不加 现在有一个student表 结构如下 现在我认为student太长了 我不想一直打 sql语句如下 select a
  • setTimeout异步

    同步任务和异步任务 同步和异步操作的区别就是是否阻碍后续代码的执行 同步任务是那些没有被引擎挂起 在主线程上排队执行的任务 只有前一个任务执行完毕 才能执行后一个任务 异步任务是那些被引擎放在一边 不进入主线程 而进入任务队列的任务 只有引
  • 【IEEE 13 节点分配系统中的THD降低】系统的谐波分析给出了各种总线上电流和电压的谐波频谱和THD(Simulink实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Simulink仿真实现 1 概述 IEEE 13 节点分配系统中的THD
  • 第三方微信登陆的后台实现

    关于微信第三方的开发 官方文档给了很详细的解析说明 有不清楚流程的同学可以先去官网学习 而我这里主要是整理一下自己的后台处理流程 其实微信登录就是通过用户的授权 允许app获取用户的微信信息 再往自己的数据库插入获取的信息 这里用手机app
  • 6. C++知识点之三目运算符

    三目运算符 C 有一个常用来代替if else语句的操作符 这个操作符被称为三木运算符 它是C 中唯一一个需要3个操作数的操作符 该操作符的通用格式如下 b a c 如果b为真 则整个表达式的值为a 否则表达式的值为c 下面两个语句演示了该
  • 千万并发连接下,如何保障网络性能

    点击一键订阅 云荐大咖 专栏 获取官方推荐精品内容 学技术不迷路 过去几十年互联网呈爆发式的增长 内容的丰富以及层出不穷的DDoS攻击等 对网络性能提出了极大的挑战 也同样促进了网络基础设施的快速发展 运营商的带宽越来越大 CPU 网卡等硬
  • Ubuntu /etc/security/limits.conf 不生效

    遇到报错 RuntimeError unable to open shared memory object in read write mode 查到的教程说需要ulimit n 设置一个比较大的数 用ulimit n 发现最大是1024
  • Element组件浅尝辄止5:Empty 空状态组件

    Empty空状态组件 空状态时的占位提示 如第一次进入当前功能模块时 数据状态为空 则展示空状态 可用到Empty组件 1 How
  • 可以向同事学学shader了

    今天无意中和同事聊天 发现他竟然会级联阴影 级联阴影不是新技术 但是我见过的 能用的真少 大多数停留在理论阶段 可能是我遇见的优秀的人不多吧 不管怎样 立足现在公司 多向高手学习
  • 《Effective Modern C++》第0章学习记录

    Acknowledgement C 0x C 11 C 14 Usenet newsgroup comp std c Stack Overflow Overview of the New C Modern C Design Going na