假设类 B 是基类,类 D 派生自 B。 使用 VS-Debugger - 如果你有一个指向 D 类实例的指针 - 根据我们的定义,它也是一个指向 B 类的指针,所以你可以转换它 - 这些指针显示略有不同?
# pseudo-code:
B *pB = new D();
D *pD = (D*) pB;
# why is: pb != pD
最佳答案
这个概念称为别名。 D pD = (D) pB; 在这里你将 pd 分配给 pb,不管你是否正在转换它。您不是在创建新对象。地址将相同,位置上的对象已更改位置仍然相同。
想象一下,在您当前的地址 build 一个新家,您的地址将保持不变。 因此,如果您比较这两个指针,它们将指向相同的地址。
关于c++ - 基类和派生类之间的不同调试器指针地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46600035/