【发布时间】:2015-11-09 22:40:21
【问题描述】:
由于指针是整数,所以如果
Object* one = new SameObject();
Object* two = one;
那么如果我将one 与two 进行比较,我会得到正确的结果。
我可以用它来比较两个这样的对象是否相等吗?这可以作为平等的保证吗?初始化后,对象是否随时在堆中移动?
【问题讨论】:
-
SameObject是一个变量,它不在堆中分配。堆数据使用new或malloc()分配。 -
当程序员看到两个指针被比较时,他们期望两个指针正在被比较。任何其他行为只会让你看起来很奇怪。
-
我用它来实现对象的连接图。我现在意识到这不是这样做的方法。
-
指针不是整数。如果指针是整数,我们应该能够对指针进行除法。我们不可以。示例:
int X = 4, * Xp = &X, * Yp = Xp / 10; -
不是整数数据类型意义上的整数,而是一个内存地址,它是一个数字,一个无符号整数。你可以用数字加/减指针——这叫做指针算术。
标签: c++ pointers memory-management heap-memory