派生类和基类之间的指针到指针的隐式转换
处理派生类和基类之间的指针到指针转换时类中,遇到的一个常见错误是无法将派生类 (Child) 的指针到指针隐式转换为基类 (Base) 的指针。这是因为这样的转换可能会导致意外和潜在的危险情况。
考虑提供的示例程序:
<code class="cpp">class Base { }; class Child : public Base { }; int main() { Child *c = new Child(); Base *b = c; Child **cc = &c; Base **bb = cc; // error: invalid conversion from ‘Child**’ to ‘Base**’ }</code>
出现错误的原因是编译器阻止了 cc (a Child )到 bb(基础)。此禁止的根本原因是为了防止 bb 所指向的对象中潜在的不一致。如果允许这样的转换,可能会导致 bb 指向不是从 Child 派生的 Base 实例的情况。
要解决此问题,有两种方法:
以上是为什么不能将派生类的指针到指针隐式转换为基类的指针到指针?的详细内容。更多信息请关注PHP中文网其他相关文章!