C 11 での POD 要件の緩和: その根拠の探索
C 11 標準では、プレーン オールド データ (POD) 型の定義が改訂されました。 、そのデザインに関していくつかの疑問が生じています
データ メンバーのアクセス制御の制限
当初、POD は、データ メンバーごとに異なるアクセス レベルを防ぐために、同じアクセス制御を持つメンバーを持つ必要がありました。この制限が解除されると、さまざまな権限レベルのオブジェクトからメンバーにアクセスしようとすると、一貫性のない動作が発生する可能性があります。
データ メンバーの重複の禁止
もう 1 つの驚きその定義は、最初のデータ メンバーと同じ型を持つ基本クラスの禁止です。この制限は、最初のメンバーと完全なオブジェクトが同じアドレスを持つ必要があることから生じています。これらが重複している場合、オブジェクト アドレスをその最初のメンバーの型にキャストすると、あいまいさが生じる可能性があります。
複数のデータ メンバー クラスの制限
要件は、最大でも次のとおりです。 1 つの基本クラスにデータ メンバーがあるため、あいまいさの可能性が制限されます。複数の基本クラスにデータ メンバーが含まれている場合、標準ではクラス間でこれらのメンバーの割り当て順序を指定する必要があり、これはメモリ レイアウト実装の柔軟性に影響します。
これらの制限の根拠
これらの制限により、標準レイアウト クラスが特定の基準を満たすことが保証され、特定のものが許可されます。最適化:
結論
C 11 の改訂された POD 定義は、標準レイアウト クラスのためのより柔軟なフレームワークを提供します同時に、オブジェクト メモリ レイアウトとデータ メンバー アクセスに関する重要な考慮事項を保護します。これらの制限により、提供された例のような異常な構造が発生する可能性があるにもかかわらず、POD の動作の一貫性と信頼性が保証されます。
以上がC 11 が POD タイプの定義を制限したのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。