C++指针多继承的乐趣

标签 c++ multiple-inheritance

我正在编写一些涉及从基本引用计数指针类继承的代码;一些复杂的 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* 被转换为 papb 指向正确的地址。

  • does pa == pb ?

不,通常不会。同一地址不能有 A 对象和 B 对象。

Furthermore, does

  • pc == (C*) pa ?
  • pc == (C*) pb ?

强制转换将指针转换回 C 对象的地址,因此两个等式都为真。

关于C++指针多继承的乐趣,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2157104/

相关文章:

c# - 组合两个类的成员选择器表达式

c++ - 多重继承和多态问题

java - 通过接口(interface)实现多重继承

c++ - 仅功能的多重继承 - 没有虚拟和 CRTP

c++ - 为什么虚基多重继承只调用基类默认构造函数?

c++ - 寻找一个简单的 C++ 音频播放库

c++ - 由 lambda 初始化的函数指针及其作用域

c++ - libpcap c/c++ 回调函数

c++ - 自动从一个 sql server 推送到另一个

c++ - 用于#include 和其他文件的不同路径