C++

  • Item 47: Use traits classes for information about types
    posted @ 2012-07-07 12:05 mildcat| 编辑
  • 基于引用计数抽象基类的String实现4(EC++)      摘要: 带引用计数的基类
    引用计数不只用在字符串类上,只要是多个对象具有相同值的类都可以使用引用计数。改写一个类以获得引用计数需要大量的工作,而我们已经有太的工作需要做了。这样不好吗:如果我们将引用计数的代码写成与运行环境无关的,并能在需要时将它嫁接到其它类上?当然很好。很幸运,有一个方法可以实现它(至少完成了绝大部分必须的工作)。
    第一步是构建一个基类RCObject,任何需要引用计数的类都必须从它继承。RCObject封装了引用计数功能,如增加和减少引用计数的函数。它还包含了当这个值不再被需要时摧毁值对象的代码(也就是引用计数为0时)。最后,它包含了一个字段以跟踪这个值对象是否可共享,并提供查询这个值和将它设为false的函数。不需将可共享标志设为true的函数,因为所有的值对象默认都是可共享的。如上面说过的,一旦一个对象变成了不可共享,将没有办法使它再次成为可共享。
      阅读全文
    posted @ 2010-07-14 20:26 mildcat 阅读(205) | 评论 (0)  编辑
  • 基于引用计数的String实现3(来自EC++)      摘要: 版本3引入了代理类, 来解决operator[]的读和写问题,即:

    在应用程序调用operator[]进行读操作时,String内部不进行字符串复制;

    在应用程序调用operator[]进行写操作时,String内部才进行字符串复制。  阅读全文
    posted @ 2010-07-13 16:51 mildcat 阅读(178) | 评论 (0)  编辑
  • 一个String的测试程序(同样适用于标准模板库中的string)
    posted @ 2010-07-13 14:45 mildcat 阅读(73) | 评论 (0)  编辑
  • 基于引用计数的String实现2(来自EC++)      摘要: 通过引进一个共享标志位,版本2解决了版本1存在的问题.
    通过一个测试程序可得到【这样的结论:版本2与dev c++环境下的string版本实现方式比较一致。  阅读全文
    posted @ 2010-07-13 14:37 mildcat 阅读(95) | 评论 (0)  编辑
  • 基于引用计数的String实现1(来自EC++)      摘要: 创建一个带引用计数的String类并不困难,但需要注意一些细节,所以我们将略述这样一个类的大部分常用成员函数的实现。然而,在开始之前,认识到“我们需要一个地方来存储这个计数值”是很重要的。这个地方不能在String对象内部,因为需要的是每个String值一个引用计数值,而不是每个String对象一个引用计数。这意味着String值和引用计数间是一一对应的关系,所以我们将创建一个类来保存引用计数及其跟踪的值。我们叫这个类StringValue,又因为它唯一的用处就是帮助我们实现String类,所以我们将它嵌套在String类的私有区内。另外,为了便于Sting的所有成员函数读取其数据区,我们将StringValue申明为struct。  阅读全文
    posted @ 2010-07-10 10:32 mildcat 阅读(92) | 评论 (0)  编辑
  • EC++中一个限制类产生实例数的方法
    posted @ 2010-07-08 15:15 mildcat 阅读(150) | 评论 (0)  编辑