首页 > 编程语言 >A tour of C++ 读书笔记

A tour of C++ 读书笔记

时间:2024-07-02 16:32:41浏览次数:1  
标签:容器 const 函数 读书笔记 C++ cast tour 基类 构造函数

第一章:

C++只是个编译型语言,需要源文件编译成目标文件,再通过链接各种库到可执行文件
img

1.6 常量

  const
  const expr 这个代表是要在编译的时候估值,性能会有所增加吧

2.4 联合体(union)

  联合体所有的成员都是分配在同一地址上面,所以联合体所占的空间是跟其自身内部成员所占容量最大的空间一致,因此联合体只能保持一个成员的值。标准库中有个类型叫做 variant.后面可以关注一下。

2.5 枚举(enum)

enum class Color{
    red,
    green,
    blue
    }

  enum后面的class指名了这是个强类型的枚举,并且限定了这些枚举的作用域。enum class 有助于防止常量的误用。

3.5.1 异常

  RAII的答题思路:让类的构造函数获取正常运作所需的全部资源,然后析构函数释放全部资源,这样资源的释放就可以有保障的隐式进行。

3.6.1 参数传递

  关心性能的时候,通常对于小型的值传值,较大的值传引用,其中的小一般是指不超过两或者三个指针的容量;

3.6.2 值返回

  看完全书之后需要重温这一段关于operator+

4.2.3 初始化容器

img

  这个地方不用while循环而用for循环,是因为要把d的作用域限制在循环里面
  static_cast const_cast reinterpret_cast dynamic_cast

4.3 抽象类型

  继承后覆写虚函数的时候最好把override写上,以便理解与阅读。
  内联函数其实也可以把inline加上,另外构造函数与析构函数最好不要写成内联函数,因为如果涉及继承的话就会先运行了基类的构造函数埋下雷。
  虚函数与虚函数表
img

4.5 类层次

  •   虚析构函数对于抽象类来说是必须的,因为操控派生类的对象通常是借助抽象基类提供的借口进行的,具体来说,他可能是通过基类的指针被销毁的。然后虚函数调用机制确保正确析构函数被调用。因为基类的析构函数是虚的,delete调用的是距离基类最远的派生类的那个。对象的构建是自下而上(从基类开始),而销毁通过析构函数“从顶到底”(从派生类开始)。

5.1.1 基本操作

  =delete的用法,可用于屏蔽任何函数,不仅仅是基本成员函数。

5.1.2 类型转换

  explicit:应该把explicit用于单参数的构造函数,除非有好理由不用他

5.2.1 容器复制

  拷贝构造函数、拷贝赋值函数

5.2.2 容器转移

  转移构造函数,这时候就会用到&&“右值引用”;
  左值:可以出现在赋值左侧的东西;
  右值:不能对其赋值的东西,比如函数调用返回的某个整数。这样右值引用就是一个没有其他人能为其赋值的东西,所以可以安全的“偷取”某值。
  转移构造函数不接受const参数,因为要从其参数中把值移除

5.3 资源管理

  定义构造函数、拷贝操作、转移操作和析构函数,程序员可以完全控制所持资源的生命周期。

6.2.1 受限模板参数

  针对于模板这一块新加了个关键字Element

template<Element T>

  其中Element是用来检测T的

8 字符串和正则表达式

10 输入输出

11 容器

  vector,list,map...

12 算法

  迭代器iterator作用就是分离算法和容器。不同类型的容器迭代器不一样。

13 实用功能

  mutex scoped_lock

13.2.1 unique_ptr和shared_ptr

13.2.2 move()和forward()

13.4.3 pair和tuple

13.5.1 variant

  variant通常是union显示应用的更安全,更便捷的替代品。

13.7 时间

   duration_cast

13.8 函数适配

13.8.1 lambda表达式

13.8.2 mem_fn()

  在lambda表达式被C++11引入之前,就是用mem_fn()及其等价物是把面向对象风格的调用转化到函数式风格的主要方式

13.8.3 function

  function的用途:回调函数、将运算作为参数传递、传递函数对象。但是与直接的调用相比,会存在一些运行时的性能损耗,而且function作为函数对象无法参与函数重载。

13.9.2 类型谓词

  <type_trait> is_class,is_arithmetic,is_pod,is_literal_type,has_virtuak_destructor,is_base_of

15 并发

  thread mutex scoped_lock unique_lock condition_variable

标签:容器,const,函数,读书笔记,C++,cast,tour,基类,构造函数
From: https://www.cnblogs.com/PassbyAnt/p/18280085

相关文章

  • 2024年华为OD机试真题-分披萨-C++-OD统一考试(C卷D卷)
    2024年OD统一考试(D卷)完整题库:华为OD机试2024年最新题库(Python、JAVA、C++合集) 题目描述:“吃货”和“馋嘴”两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数扇形小块。但是粗心服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小......
  • C++那些事 研读...
    constthings1.const常量与#define宏定义常量区别const常量编译时期可以进行安全检查,#define宏定义并没有具体的数据类型,只是字符替换罢了,不能安全检查2.const与指针constchar*a;//指向constchar的指针charconst*a;//指向constchar的指针char*consta;//const......
  • 2024.07.02【读书笔记】|医疗科技创新流程(第二章 创新创造 监管基础概述)
    监管基础概述监管基础涉及对医疗设备监管环境的理解,包括监管机构的组织结构、监管途径以及产品分类等。美国食品药品监督管理局(FDA)是全球领先的监管机构,其对医疗设备的监管流程为全球许多其他国家的监管机构所借鉴。FDA的背景和组织结构FDA是一个科学性的监管机构,负责保......
  • 2024.07.02【读书笔记】|医疗科技创新流程(第二章 创新创造 报销基础概述)
    报销基础概述在医疗领域,报销是指医疗设备、药品或服务在提供给患者后,由保险公司或支付机构对其进行补偿的过程。报销基础是医疗设备创新过程中的一个重要组成部分,它影响着产品的市场成功和可及性。报销的重要性医疗设备的报销直接影响到产品的市场接受度和销售潜力。如果......
  • Visual C++ generate uuid via UuidCreate and CoCreateGuid,get time now,write stri
    //ConsoleApplication3.cpp:Thisfilecontainsthe'main'function.Programexecutionbeginsandendsthere.//#pragmacomment(lib,"rpcrt4.lib")#include<windows.h>#include<chrono>#include<ctime>#include&l......
  • 《C++ Primer》导学系列:第 13 章 - 拷贝控制
    13.1拷贝、赋值与析构函数拷贝控制是C++中类设计的重要组成部分,用于管理对象的复制、赋值和销毁过程。理解并正确实现拷贝控制函数(拷贝构造函数、拷贝赋值运算符和析构函数)对于编写健壮和高效的C++程序至关重要。13.1.1拷贝构造函数拷贝构造函数用于创建对象的副本。它的......
  • C++23特性一览
    NewlanguagefeaturesNewlanguagefeaturetestingmacrosExplicitobjectparameters,explicitobjectmemberfunctions(deducingthis)ifconsteval/ifnotconstevalMultidimensionalsubscriptoperator(e.g.v[1,3,7]=42;)staticoperator()static......
  • C++编译问题,解决arm下链接静态库,引起的relocation R_AARCH64_ADR_PREL_PG_HI21 agains
    显示的完整错误如下:relocationR_AARCH64_ADR_PREL_PG_HI21againstsymbol`ZN2c43yml9free_implEPvmS1'whichmaybindexternallycannotbeusedwhenmakingasharedobject;recompilewith-fPIC根据提示,在链接.a静态库时,应该在编译时加上参数-fPIC然而CMake文件中已......
  • 详解C++中的容器,其特点与常用方法
    1.容器的定义在C++中,容器的概念是指一种对象类型,它可以持有其他对象或指向其他对象的指针。这种对象类型在数据存储上提供了一种有效的方式来管理一组元素。容器在C++中通常是模板类的形式。一般来说,容器内的元素都是相同类型的。即如果该容器内存放的是int类型的数据,那么......
  • Hadoop权威指南-读书笔记-01-初识Hadoop
    Hadoop权威指南-读书笔记记录一下读这本书的时候觉得有意思或者重要的点~第一章—初识HadoopTips:这个引例很有哲理嘻嘻......