我不知道这是否适合在这里提出问题,因为这个问题更具体而不是一般。
我一直在读这本书:OOP in C - Axel Schreiner,但发现它很难理解。
例如,在第1.7节:实现中-设置
如果一个对象不存储任何信息,并且每个对象都属于 最多一组,我们可以将每个对象和每个组表示为小, 唯一的正整数值,用作数组heap []的索引。 如果对象是集合的成员,则其数组元素包含 表示集合的整数值。因此,对象指向 设置包含它们。
与
#if ! defined MANY || MANY < 1
#define MANY 10
#endif
static int heap [MANY];
void * new (const void * type, ...)
{ int * p; /* & heap[1..] */
for (p = heap + 1; p < heap + MANY; ++ p)
if (! * p)
break;
assert(p < heap + MANY);
* p = MANY;
return p;
}
我不能将这两个连接在一起。
“对象不存储任何信息”是什么意思?
“每个对象最多属于一组”是什么意思?
“如果对象是集合的成员,则其数组元素包含表示集合的整数值”是什么意思?
我读得很辛苦,但仍然听不懂。 谢谢。
答案 0 :(得分:2)
如果我很了解:
“对象不存储任何信息”是什么意思?
仅对象本身是有用的,您可以将其与其他对象(==或!=)进行比较,但其值本身并不重要
“每个对象最多属于一组”是什么意思?
“如果对象是集合的成员,则其数组元素包含表示集合的整数值”是什么意思?
当您查看他的建议时,您会看到 new 只需在 heap 中搜索一个空值,而当 heap 的元素为0时,表示尚未使用相应的对象,因此他用MANY(实际上可以使用任何null值)标记设置该元素的元素,并返回该元素的地址。
在没有可用元素的情况下,代码无法处理情况。
您没有给免费,但是肯定会重置为0
所有这些都有点奇怪
答案 1 :(得分:2)
假设对象可以是水果,苹果,香蕉或橙子
“对象不存储任何信息”是什么意思?
您只想知道对象的集合(它是一个苹果),而无需存储其他信息(该对象的生产时间和地点,其范围等)。
“每个对象最多属于一组”是什么意思?
一个对象不能同时是苹果和橙子
“如果对象是集合的成员,则其数组元素包含>表示集合的整数值”是什么意思?
然后,您可以在数组中使用索引来描述对象。
实际上,您可以使用任何唯一的int标识符来描述对象,并且给定的代码这样做毫无用处。
答案 2 :(得分:0)
回应我自己。
如果一个对象不存储任何信息,并且每个对象都属于 最多一组,我们可以将每个对象和每个组表示为小, 唯一的正整数值,用作数组堆[]的索引。
让我们说一个整数值可以表示一个集合或一个对象。例如:
0代表一个苹果对象
1代表香蕉对象
2代表一个苹果集
3代表香蕉组
在这种情况下,object只是一个整数值,因此无法存储任何信息。
此外,上面的整数值(0、1、2、3)可用作堆数组的索引。
如果对象是集合的成员,则其数组元素包含 表示集合的整数值。因此,对象指向 设置包含它们。
在上面的示例中,0(对象苹果)是2(set苹果)的成员。
因此,堆[0] = 2。
注意:结论堆[0] = 2仅在每个对象最多属于一个集合的条件下保存。