派生クラスと基底クラスの間のポインターからポインターへの暗黙的な変換
派生クラスと基底クラスの間のポインターからポインターへの変換を処理する場合クラスを作成する際に発生する一般的なエラーは、派生クラス (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 (子オブジェクト) の割り当てを妨げるために発生します。 ) から bb (ベース) へ。この禁止の根本的な理由は、bb が指すオブジェクトの潜在的な不一致を防ぐためです。このような変換が許可されると、bb が Child から派生していない Base のインスタンスを指すというシナリオが生じる可能性があります。
この問題に対処するには、次の 2 つのアプローチがあります。
以上が派生クラスのポインタ対ポインタを基底クラスのポインタ対ポインタに暗黙的に変換できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。