内容: 今天记录一下两个容易混淆的词,就是RAII与RTTI,以前刚开始学习C++的时候总以为是一个东西哈哈。
RAII:(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的技术。
利用的就是C++构造的对象最终会被销毁的原则。RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,释放构造时获取的资源。
主要表现为:使用智能指针,智能指针其实是模板类,然后你使用一个智能指针对象来管理你的资源,如果这个智能指针对象是栈对象,那么它超出作用域后,自动销毁时,也会释放掉它管理的资源,这样就可以避免你忘记释放资源而导致的资源泄露。
RTTI: (Run Time Type Identification)即通过运行时类型识别,程序能够使用基类的指针或引用来检查着这些指针或引用所指的对象的实际派生类型。
主要表现为:typeid和dynamic_cast操作符
typeid操作符:返回指针和引用所指的实际类型;
dynamic_cast操作符:将基类类型的指针或引用安全地转换为其派生类类型的指针或引用。
而运行期识别的信息存放在什么地方呢?
答案:存放在一个特定的对象中,这个对象的指针就放在虚函数表的其中一项。
写篇博客记录下来,给忘记了的同学复习一下哈。考完试,终于有时间把攒着的博客发一下了。不过又要迎来最后两科考试了,考完就要去实习了。后面有空发下实习的体验哈。