多重继承是伟大的,蛮好的,只要你有你的继承层次结构有清晰的认识和一些潜在的缺陷(如中描述的Perl处理它的perldoc perltoot )。 然而,它不讨论使用的禁止领域的多重继承编译。 事实上,我找不到任何有关这个文档任何...
这里有一个例证:
package Parent1;
use fields 'field1';
package Parent2;
use fields 'field2';
package Child;
use base qw(Parent1 Parent2);
这种失败,出现错误:“在无法复制继承域”
当父母双方都有相同的字段这甚至不工作.. 即使他们可证明一样的,因为他们来自一个共享的祖父母:
package Grandparent;
use fields qw(field1);
package Parent1;
use base 'Grandparent';
package Parent2;
use base 'Grandparent';
package Child;
use base qw(Parent1 Parent2);
有一个缺陷,以实现这个正常是不变的,一个领域的子对象的索引始终是相同其父的索引。 我不知道真正需要这个要求,但是...不像C ++,其中一个对象可以使用类型化的父指针存取,Perl的其参考操作时(确实总是知道真实对象的类型田伪散列本质上是一个虚函数表,不停地在每一个对象实例)。 特别是在上面的第二个示例中,字段从每个父来自父母双方继承的,因此它们可以折叠在一起,并且没有冲突的索引。
我敢肯定有其他一些问题,但我还没有找到他们。
任何人使用Perl的内部的一些知识对此有何评论?