本期是C++基础语法分享的第九节,今天给大家来分享一下:
(1)智能指针;
(2)强制类型转换运算符;
(3)运行时类型信息 (RTTI);
智能指针
C++ 标准库(STL)中
头文件:#include <memory>
C++ 98:
std::auto_ptr<std::string> ps (new std::string(str));
C++ 11:
shared_ptr
unique_ptr
weak_ptr
auto_ptr(被 C++11 弃用)
Class shared_ptr 实现共享式拥有(shared ownership)概念。多个智能指针指向相同对象,该对象和其相关资源会在 “最后一个 reference 被销毁” 时被释放。为了在结构较复杂的情景中执行上述工作,标准库提供 weak_ptr、bad_weak_ptr 和 enable_shared_from_this 等辅助类。
Class unique_ptr 实现独占式拥有(exclusive ownership)或严格拥有(strict ownership)概念,保证同一时间内只有一个智能指针可以指向该对象。你可以移交拥有权。它对于避免内存泄漏(resource leak)——如 new 后忘记 delete ——特别有用。
shared_ptr
多个智能指针可以共享同一个对象,对象的最末一个拥有着有责任销毁对象,并清理与该对象相关的所有资源。
支持定制型删除器(custom deleter),可防范 Cross-DLL 问题(对象在动态链接库(DLL)中被 new 创建&#x