c++ - 基类和派生类之间的不同调试器指针地址

标签 c++ debugging pointers

假设类 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/

相关文章:

c++ - 当对象在堆栈上声明时,你能保证析构函数的顺序吗?

python - 不带参数传递 Python 函数

go - VS Code 去调试 : could not launch process: not an executable file

c++ - 从函数返回 this 指针的重要用途是什么?

c - 在 C 中释放内存

c++ - 命名空间标准重载小于

c++ - 为什么 Singleton 是比 Global Objects 更好的选择

c++ - "InitGoogleLogging"是做什么的?

linux - Shell 脚本 - URL 操作

C - 表达式必须是可修改的左值