TimurVI Asked:2020-12-19 02:00:59 +0800 CST2020-12-19 02:00:59 +0800 CST 2020-12-19 02:00:59 +0800 CST 多重继承的不便 772 维基百科 关于接口的文章指出: 在执行级别,多重继承的经典方案会带来更多的不便: - 如果一个对象可以并行继承n个类,则有n个独立的方法访问它,这意味着必须有(n-1)个额外的指针指向它;从自动内存管理的角度来看,这将意味着有指向对象中间的引用; “指向对象中间的引用”是什么意思,也就是说,指向对象占用的那部分已分配物理内存的中间? интерфейс 1 个回答 Voted Best Answer pavel 2020-12-19T02:06:56+08:002020-12-19T02:06:56+08:00 让我们想象一种情况。我们有一个简单的类: class A{ int x; } class B{ int y; } class C:A,B{ } 我们知道指向后代的指针可以转换为指向基类的指针。那些。 C* p = new C(); //p - p = 0; A* pp = (A*) p; //pp -p = 0; 这里没有问题,基类位于对象的开头,指针(其数值)相同。 现在B* ppp = (B*) p; //ppp - p = sizeof(A)。 我们必须有一个指向 B 类块开头的指针。但它出现在 A 类街区之后。 当然,这有点过于简单化了,但事实就是如此。那些。对象 C 是对象 A,然后是对象 B,然后是它的字段。 C++中的一个例子。
让我们想象一种情况。我们有一个简单的类:
我们知道指向后代的指针可以转换为指向基类的指针。那些。
这里没有问题,基类位于对象的开头,指针(其数值)相同。
现在
B* ppp = (B*) p; //ppp - p = sizeof(A)
。我们必须有一个指向 B 类块开头的指针。但它出现在 A 类街区之后。
当然,这有点过于简单化了,但事实就是如此。那些。对象 C 是对象 A,然后是对象 B,然后是它的字段。
C++中的一个例子。