安全管理动态内存

C++C++Beginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本挑战中,你将为一家本地书店开发一个小型的库存管理系统。该书店需要一种内存高效的方式来跟踪书籍详细信息,同时避免内存泄漏的风险。你将使用 unique_ptr 创建一个 Book 类,以动态管理书籍信息,实现一个带有标题、作者和出版年份参数的构造函数,并添加一个方法,使用智能指针管理安全地显示书籍详细信息。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/AdvancedConceptsGroup(["Advanced Concepts"]) cpp(("C++")) -.-> cpp/OOPGroup(["OOP"]) cpp/OOPGroup -.-> cpp/classes_objects("Classes/Objects") cpp/OOPGroup -.-> cpp/constructors("Constructors") cpp/AdvancedConceptsGroup -.-> cpp/pointers("Pointers") subgraph Lab Skills cpp/classes_objects -.-> lab-446299{{"安全管理动态内存"}} cpp/constructors -.-> lab-446299{{"安全管理动态内存"}} cpp/pointers -.-> lab-446299{{"安全管理动态内存"}} end

安全管理动态内存

你正在为一家本地书店开发一个小型的库存管理系统。该书店需要一种内存高效的方式来跟踪书籍详细信息,同时避免内存泄漏的风险。

任务

  • 使用 unique_ptr 创建一个 Book 类,以动态管理书籍信息
  • 实现一个构造函数,接收书籍标题、作者和出版年份
  • 添加一个方法,使用智能指针管理安全地显示书籍信息
  • 演示正确的内存分配和自动清理

要求

  • 使用 unique_ptr 管理书籍对象的内存
  • ~/project/book_tracker.cpp 中创建实现
  • 实现一个带有标题、作者和出版年份参数的构造函数
  • 包含一个 displayInfo() 方法,用于打印书籍详细信息
  • 确保在对象创建和销毁过程中不会发生内存泄漏

示例

编译并运行程序以显示书籍信息:

g++ book_tracker.cpp -o book_tracker
./book_tracker

示例输出:

Book Title: The Great Gatsby
Author: F. Scott Fitzgerald
Publication Year: 1925

提示

  • 使用 std::unique_ptr 实现自动内存管理
  • 记得在构造函数中初始化成员变量
  • 在转移 unique_ptr 的所有权时使用 std::move()
  • 实现方法以安全访问和显示书籍信息
✨ 查看解决方案并练习

总结

总结来说,本挑战要求你创建一个 Book 类,使用 unique_ptr 动态管理书籍信息。你将实现一个构造函数来初始化书籍详细信息,例如标题、作者和出版年份,并添加一个方法以安全地显示书籍信息。目标是演示正确的内存分配和自动清理,确保在对象创建和销毁过程中不会发生内存泄漏。