EffectiveC++学习笔记 资源管理

条款13 以对象管理资源

资源对象最好用指针控制管理。
raw point每次创建后,必须delete掉
std::auto_ptr智能指针,它会自动对所指向的对象调用delete。如果auto_ptr同时指向同一对象,那么delete会被多次调用。
std::shared_ptr引用计数型智慧指针(RCSP),它会在无人指向它时才自动删除该资源。
std::shared_ptr可以指定自定义delete来释放

template <class U> void reset (U* p);
template <class U, class D> void reset (U* p, D del);
template <class U, class D, class Alloc> void reset (U* p, D del, Alloc alloc);
  • 为防止资源泄露,请使用RAII对象,它们在构造函数中获得资源并在析构函数中释放资源。
  • 两个常被使用的RAII classes分别是tr1::shared_ptr和auto_ptr。前者通常是最佳选择,因为其copy行为比较直观。若选择auto_ptr,复制动作会使它指向null。

条款14 在资源管理类中小心copying行为

资源取得时机便是初始化的时机。

  • 复制RAII对象必须一并复制它所管理的资源,所以资源的copying行为决定RAII对象的copy行为。
    如果资源被复制不合理,那么应该禁止它。copy函数设置为private
    如果希望保有资源直到它最后一个使用者,那么复制RAII对象时,资源应用计数也应该增加。可以用std::shared_ptr
    如果资源可以复制任意数量,那么资源管理类复制时,因该是深度拷贝。
    如果资源复制需要转移所有权,那么用std::autor_ptr
  • 普遍而常见的RAII class copying行为是:抑制copying、施行引用计数法。

条款15 在资源管理类中提供对原始资源的访问

  • APIs往往要求访问原始资源,所以每个RAII class应该提供共一个“取得其所管理资源”的办法。
  • 对原始资源的访问可能经由显式转换或隐式转换。显示比较安全,隐式比较方便。

条款16 成对使用new和delete时要采取相同形式

  • 在new表达式中使用[ ],那么delete也要用[ ]。如果new中不用[ ],那么delete中也不用[ ]。

条款17 以独立语句将newed对象置入智能指针

int prioprity();
void processWidget(std::tr1::shared_ptr<Widget> pw, int prioprity);

processWidget(new Widget, priority());

如果priority()中抛出了异常,那么new会无法被释放。最好分开写

std::tr1::shared_ptr<Widget> pw(new Widget);
processWidget(pw, priority());
  • 以独立语句将newed对象存储于(置入)只能指针内。如果不这样做,一旦异常被抛出,有可能导致难以察觉的资源泄露。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 《Effective C++ 第三版》是一本关于C++高效编程的经典书籍,它涵盖了23个关键的C++编程技术,旨在帮助C++程序员成为更加高效和高质量的软件工程师。本书主要聚焦于面向对象编程和模板编程,以及C++语言的一些独特特性和语法,如函数重载、拷贝构造函数、移动语义、虚函数和多重继承等。本书帮助读者了解和掌握如何更好地使用C++,以提高代码的可读性、可维护性和可重用性。本书还覆盖了很多经常出现的编程问题,如内存管理、异常处理、并发编程等等,以及如何进行程序优化和测试。《Effective C++ 第三版》是一本全面而且深入的书籍,可以帮助C++ programmer成为真正的C++专家。无论是入门开发者还是有经验的程序员,都可以从中获得很多价值。此外,《Effective C++ 第三版》也是一本非常好的参考书籍,可以为学习和使用C++提供坚实的理论基础和实用的示例代码。 ### 回答2: "Effective C++" 是著名的程序设计书籍,作者是著名计算机科学家Scott Meyers。该书现已经推出第三版,也有了相应的PDF电子书。 这本书主要介绍了C++语言的一些重要概念和技术,帮助读者更好地理解C++的基本特性和高级编程技巧。第三版对前两版的内容进行了全面更新和完善,加入了最新的C++11和C++14标准中的变化和增强,包含了作者多年的实践和经验总结,增加了大量的实例和代码。 此外,"Effective C++"第三版还介绍了许多经典的C++编程问题和解决方案,例如对象生命周期管理、内存管理、资源共享、模板和STL应用等。这些问题在实际编程中经常会遇到,掌握了这些技巧有助于提升代码的质量、可靠性和效率。 总之,"Effective C++"第三版是一本十分实用、经典的C++编程书籍,它不仅适合初学者,也对有经验的程序员有重要的参考价值。无论是想提高自己的编程水平、规避C++程序中常见的错误,还是想进一步掌握现代C++编程技术的读者,都不可错过这本书。 ### 回答3: Effective C++ 第三版 pdf 是一本非常有价值的书籍,它是由 C++ 大师 Scott Meyers 所著,是 C++程序员必读的一本书籍。本书深入浅出地介绍了 C++语言中的一些非常重要的知识点和技巧,帮助读者更好地理解和运用 C++语言,提高编程的质量和效率。 在 Effective C++ 第三版 pdf 中,作者从多个方面对 C++语言进行了详细分析和解释,包括构造函数和析构函数的实现,运算符重载的使用,继承和虚函数的原理和应用,以及 STL等一系列的 C++语言特性和库函数的使用技巧。通过对这些重要知识点的深入讲解,读者可以很好地掌握 C++语言的内涵和精髓,提高自己的编程能力和技巧。 除此之外,Effective C++ 第三版 pdf 还提供了大量的实例和代码,能够直观地展示作者所说的知识点,并帮助读者更好地理解和掌握 C++语言的实际应用。读者可以通过反复练习和实践,逐渐掌握 C++语言的精髓和技巧,并能够应用到实际开发中,提高自己的编程能力和水平。 总之,Effective C++ 第三版 pdf 是一本非常有价值的书籍,它涵盖了 C++语言的重要知识点和技巧,同时提供了大量的实例和代码,能够帮助读者全面掌握 C++语言,提高自己的编程能力和水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

习惯就好zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值