C++ 智能指针
unique_ptr/shared_ptr/weak_ptr · 难度:高级 · +20XP
智能指针 — 告别 new/delete
C++11 智能指针自动管理内存,离开作用域自动释放。零额外开销。
unique_ptr — 独占所有权
auto p = make_unique(42); // 独占,不可复制
cout << *p << endl;
auto p2 = move(p); // 所有权转移
// p 现在为空
shared_ptr — 共享所有权
auto sp1 = make_shared(100);
auto sp2 = sp1; // 引用计数 +1
cout << sp1.use_count(); // 2
// 最后一个 shared_ptr 销毁时释放内存
weak_ptr — 打破循环引用
weak_ptr wp = sp1; // 不增加引用计数
if (auto sp = wp.lock()) { /* 使用 */ }
学习与实践建议
- 先理解本节的核心概念和语法规则
- 在右边编辑器中修改示例代码,观察运行结果变化
- 尝试用学到的知识完成一个小练习——比如自己写一个工具函数或小程序
- 遇到问题时,查阅官方文档是最快的学习途径
编程是门实践技能,动手写代码比看教程重要得多。坚持每天练习,你会很快看到进步!