mildcat1982
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
统计
随笔 - 2
文章 - 8
评论 - 0
引用 - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
SqlServer(1)
(rss)
随笔档案
2012年8月 (1)
2010年7月 (1)
文章分类
C++(7)
(rss)
generic algorithm
(rss)
ORACLE
(rss)
Sqlserver(1)
(rss)
STL
(rss)
UNIX
(rss)
数据结构与算法
(rss)
文章档案
2012年7月 (1)
2012年6月 (1)
2010年7月 (6)
相册
09年上海网球大师杯
搜索
最新评论
阅读排行榜
1. 浅析基于引用计数的字符串类string(925)
2. SQL Server临时表(245)
评论排行榜
1. 浅析基于引用计数的字符串类string(0)
2. SQL Server临时表(0)
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)
编辑