【博客67】RAII与RTTI

本文解析了C++中RAII(ResourceAcquisitionIsInitialization)与RTTI(RunTimeTypeIdentification)的区别与应用。RAII利用对象生命周期管理资源,如智能指针在析构时自动释放资源,防止泄露。RTTI则提供了运行时类型识别,允许基类指针或引用检查实际派生类型,主要通过typeid和dynamic_cast实现。

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

内容: 今天记录一下两个容易混淆的词,就是RAII与RTTI,以前刚开始学习C++的时候总以为是一个东西哈哈。

RAII:(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的技术。

利用的就是C++构造的对象最终会被销毁的原则。RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,释放构造时获取的资源。

主要表现为:使用智能指针,智能指针其实是模板类,然后你使用一个智能指针对象来管理你的资源,如果这个智能指针对象是栈对象,那么它超出作用域后,自动销毁时,也会释放掉它管理的资源,这样就可以避免你忘记释放资源而导致的资源泄露。

RTTI: (Run Time Type Identification)即通过运行时类型识别,程序能够使用基类的指针或引用来检查着这些指针或引用所指的对象的实际派生类型。

主要表现为:typeid和dynamic_cast操作符

typeid操作符:返回指针和引用所指的实际类型;
dynamic_cast操作符:将基类类型的指针或引用安全地转换为其派生类类型的指针或引用。

而运行期识别的信息存放在什么地方呢?
答案:存放在一个特定的对象中,这个对象的指针就放在虚函数表的其中一项。

写篇博客记录下来,给忘记了的同学复习一下哈。考完试,终于有时间把攒着的博客发一下了。不过又要迎来最后两科考试了,考完就要去实习了。后面有空发下实习的体验哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值