我正在编写一些涉及从基本引用计数指针类继承的代码;一些复杂的 C++ 出现了。我已将其减少如下:
假设我有:
class A{};
class B{};
class C: public A, public B {};
C c;
C* pc = &c;
B* pb = &c;
A* pa = &c;
// does pa point to a valid A object?
// does pb point to a valid B object?
// does pa == pb ?
此外,确实:
// pc == (C*) pa ?
// pc == (C*) pb ?
谢谢!
最佳答案
- does pa point to a valid A object?
- does pb point to a valid B object?
是的,C*
被转换为 pa
和 pb
指向正确的地址。
- does pa == pb ?
不,通常不会。同一地址不能有 A
对象和 B
对象。
Furthermore, does
- pc == (C*) pa ?
- pc == (C*) pb ?
强制转换将指针转换回 C
对象的地址,因此两个等式都为真。
关于C++指针多继承的乐趣,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2157104/