如果我将派生指针转换为基指针,这两个指针是否保证具有相同的值?
If I convert a derived pointer to a base pointer, are the two pointers guaranteed to have the same value?
假设我没有使用多重继承或虚拟继承,c++标准是否保证如果我将Derived*
转换为Base*
,两个指针将具有完全相同的值?例如,即使Derived
和/或Base
具有虚函数,下面的代码是否总是调用success()
?
Derived* d = new Derived;
Base* b = d;
if (((void*)b) == ((void*)d))
success();
else
failure();
如果基类没有虚函数而派生类有,则指针可能不同,因为基类在D
对象中没有虚表指针。
相关文章:
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 创建一个棋盘格或"Interweave"两个链接列表。IE 更改两个链表的指针
- 是否可以使用非常量指针调用非常量函数,以及当两个unique_ptrs指向同一个对象时程序的行为方式?
- C++两个对象,其中包含指向同一数组不同部分的指针
- 比较两个 constexpr 指针不是 constexpr?
- 在两个.cpp文件之间定义全局类/结构指针
- 两个抽象类,派生自同一个基类.如何访问从一个抽象类到另一个抽象类的指针
- 如何在单个链表中交换两个节点的位置,只修改指针
- 如何仅考虑 *指针中的前两个元素
- 如果将两个相同的指针作为输入传递,memcmp 会做什么?
- 一个对象的两个指针.删除了一个指针,对象仍然存在
- C++如何同时删除位于两个向量中的 2 个指针?
- 如何将值添加到嵌套结构中,该结构在C++中有两个指针
- 比较两个指针时">="运算符的奇怪行为
- 根据下面的作者,如果两个指针指向不同的数组,则比较的第一个版本将未定义
- 有没有更好的方法来添加两个智能指针?
- 为什么我不能在同一行中定义两个相同类型的类的成员指针
- 为什么 fdump-class-hierarchy 为虚函数提供了两个指针 int vtable
- 两个类别的两个类,有指向另一堂课的指针
- 错误 :"+" 无法添加两个指针