Effective C++回顾(4)

原创 2006年05月23日 23:01:00

条款7:为内存不足的状况预做准备

作者讲了程序如何在内存不足的情况下保证做到正确的处理,可是以我自己多年的程序开发经验来看,这些处理没有什么太大的必要,至少我是从来没有这么做过:

1.  现在的机器配置相对而言应该是比较高的

2.  操作系统的能力,虚拟内存做了一些保障

3.  对于需要大量内存操作的程序,我们可能会采取一些优化方式来处理,如采用文件来模拟内存

正如作者在条款最后讲的一样,不管是采用什么样的处理方式,内存不足情况下是返回0还是返回异常都不是最重要,重要是你要对于内存分配的函数要有概念,你不能假设内存总是能够成功分配,要能够正确的处理内存不足情况。

对于如何更好的检查内存不足的情况,最好是把你的程序放到Windows98之前的操作系统中去运行,如果这样都没出现什么问题,程序基本上也就不太会有问题。

 

条款8:撰写operator newoperator delete时就遵行的公约

几个注意事项:

1.  正确处理内存不足的情况

2.  允许分配0字节的内存,事实上是分配出1字节的内存

3.  如果基类中实现了newdelete操作,注意继承而引起的一些问题

4.  允许delete0的内存

我觉得第三点尤其重要,在类中设计newdelete操作时,要充分考虑到这个问题。在设计的时候也可以借鉴文中提供的例子,不过我觉得最好还是在if (size != sizeof(Base)中增加assert来出一些警示。因为很多的情况下,实现BaseDerived的可能不是同一个人,同时增加一些注释也是非常有必要的。

 

待续

Effective C++ 2nd Edition (4)

十一. 如果class内动态配置有内存,请为此class声明一个copy constructor和一个assignment运算符简陋的string classclass String { publ...

Effective C++ --4 设计与声明

上一部分Effective C++ --3 资源管理   18、让接口容易被正确使用,不易被误用   (1)设计接口时要考虑客户可能可能做出的错误输入,如参数的形式等。 19、设计clas...

Effective C++读书笔记(4)

条款05:了解C++默默编写并调用哪些函数 Knowing what functions C++ silentlywrites and calls 一个 emptyclass(空类)什么时候将不再...

《Effective C++》Item4:确定对象被使用前已先被初始化

Questions:   (1)为什么需要在对象使用前初始化? (2)关于默认构造函数的几点认识? (3)为什么要使用参数初始化表进行初始化?   -------------------------...

【effective c++读书笔记】【第6章】继承与面向对象设计(4)

条款39:明智而审慎的使用private继承 1、如果classes之间的继承关系是private,编译器不会自动将一个derived class对象转换为一个base class对象。 例子: ...

《Effective Modern C++》读书笔记(4) -- 尽量使用auto来显式类型声明

写了三篇,发现还是有点啰嗦了,所以下面的笔记改的更为简洁些,更多的是记载自己对这本书的理解和运用。这节包括的内容有: auto std::function 前言在C或者C++这类语言中,声明变量的使用...
  • tutuxs
  • tutuxs
  • 2017年06月20日 21:08
  • 168

《More Effective C++》 4: 非必要不提供默认构造函数

《More Effective C++》 Rule 4: 非必要不提供默认构造函数

Effective C++ Item 4 确定对象被使用前已先被初始化

经验1:为内置对象进行手工初始化,因为C++不保证初始化它们
  • zhsenl
  • zhsenl
  • 2014年05月22日 21:26
  • 577

Effective C++(条款1-4)

1、对于单纯常量,最好以const对象或enums替换#define 2、对于形似函数的宏,最好改用inline函数替代#define 3、成员函数如果是const 意味着什么? 有两个流行的概念...
  • nawuyao
  • nawuyao
  • 2015年12月22日 16:49
  • 297

Effective C++ 条款4——确定对象被使用前已先被初始化

得到的
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Effective C++回顾(4)
举报原因:
原因补充:

(最多只允许输入30个字)