C++ Primer 第19章 知识点回顾

本文探讨了C++中的内存管理技术,包括new和delete操作符的工作原理,定位new的特点及其与allocator的区别。此外,还介绍了运行时类型识别(RTTI)的基本概念和使用方法,包括dynamic_cast和typeid的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

19.1控制内存分配

  1. new过程:一、operator new标准库函数,分配原始未构造内存;二、编译器运行相应构造函数;三、返回指针
  2. operator delete释放内存空间
  3. 定位new: new (place_address) type (initializers),

定位new允许我们在一个特定的。预先分配的内存地址上构造对象

1. 定位new与allocator的construct成员非常相似,但有重要区别:传递给construct的指针必须指向同一个allocator对象分配的空间,但是传递给定位new的指针无须指向operator new分配的内存,甚至不需要指向动态内存

  1. 调用析构函数会销毁对象,但是不会释放内存

19.2 运行时类型识别

  1. dynamic_cast:用于将基类的指针或引用安全的转换成派生类的指针或引用
  2. typeid:返回表达式的类型
  3. 以上两个运算符特别适用于以下情况:我们想使用基类对象的指针或引用执行某个派生类操作并且该操作不是虚函数。一般来说应该尽量使用虚函数。然而,并非任何时候都能定义一个虚函数。当无法使用虚函数时,使用RTTI运算符。
  4. **

使用RTTI必须要加倍小心。在可能的情况下,最好自定义虚函数而非直接管类型管理的重任。

**


19.3 枚举类型

  1. 枚举类型使我们可以将一组整型常量组织在一起,每个枚举类型定义了一种新的类型。枚举属于字面值常量类型
  2. 限定作用于枚举类型:enmu class/struct open_modes{input,output,append};
  3. 不限定作用域的枚举类型中,枚举成员的作用域于枚举类型本身的作用域相同
  4. 默认情况下,枚举值从0开始,依次加1
  5. 枚举成员是const,因此初始化枚举成员是提供的初始值必须是常量表达式
  6. 一个不限定作用域的枚举类型的对象或枚举成员自动第转换成整型int i=color::red;
  7. 要想初始化enum对象或者为enum对象赋值,必须使用该类型的一个枚举成员或者该类型的另一个对象

19.4 类成员指针

  1. 一般情况下,指针指向一个对象,但是成员指针指示的是类的成员,而非类的对象

19.5 嵌套类
1. 一个类可以定义在另一个类的内部,前者称为嵌套类


19.7 局部类
类可以定义在某个函数的内部,我们成这样的类为局部类


19.8固有的不可移植的特性

  1. volatile限定符:和const类似。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值