指向派生类的对象的基指针的值
The value of the base pointers pointing to object of derived class
以下代码中的哪条语句是正确的,为什么?
class ClassA
{
public:
virtual ~ ClassA(){};
virtual void FunctionA(){};
};
class ClassB
{
public:
virtual void FunctionB(){};
};
class ClassC : public ClassA,public ClassB
{
public:
};
int main(){
ClassC aObject;
ClassA* pA=&aObject;
ClassB* pB=&aObject;
ClassC* pC=&aObject;
return 0;
}
pA
、pB
和pC
的值相同pC = pA + pB;
- CCD_ 5不同于pB
- CCD_ 6和CCD_ 7都不等于CCD_
有人能解释基类指针指向派生对象的现象下的真实情况吗?不是简单地存储派生类的对象的起始地址吗?
pA指向ClassA类型的对象。pB指向ClassB类型的对象。pC指向ClassC类型的对象。他们的声明是这样说的。
ClassC类型的对象包含ClassA类型的对象和ClassB类型的对象。A类和B类不重叠。因此,它们中可能只有一个处于ClassC的开头。如果说ClassA在ClassC的开头,那么pA和pC将指向同一地址。另一个将与开始有一定的偏移。从理论上讲,两者都不可能在一开始就发生。
因此,唯一始终为真的语句是C:pA与pB不同。
相关文章:
- 为什么指针对象没有调用默认构造函数
- 如何访问双指针对象中的方法
- 如何使用智能指针对象执行成员函数指针
- 调用带有指针对象错误的指针变量
- 如何从模板类重载创建的指针对象上的运算符?
- C++指针对象的运算符重载
- 如何初始化数组指针对象
- 如何打印出唯一指针对象向量中的值(基于范围的循环)?C++
- C++指针对象差异
- 涉及继承,指针对象的交易以及何时进行的问题
- 表达式必须在C 中具有指针对象类型
- 下标需要数组或指针类型表达式必须具有指针对象类型
- 字符指针对象和相应的字符数组元素比较
- 如何在 c++ 中克隆为弱指针对象
- 指针对象使用CPP中的指针表达式进行比较
- Visual Studio中智能指针对象的自定义视图
- 使用指针 /对象 /模板参数正确构成
- 如果我确定只有一个线程一次处理指针/对象,则C/C 仍应使用同步
- 如何将值分配给指针对象 c++
- 更改智能指针对象,然后访问它