AUTOSAR C++14 Rule A11-0-1
A non-POD type should be defined as class
説明
ルール定義
A non-POD type should be defined as class.
根拠
POD (Plain Old Data) 型は C コードとバイナリ形式で交換可能であり、std::memcpy 関数を使用して安全にコピーできます。スカラー型、C スタイルの構造体と共用体、およびそれらの型の配列はすべて POD 型の例です。一方、C++ 言語では非 POD 型の構造体と共用体も作成できます。このような構成要素と共用体では、カスタム定義コンストラクターの提供、プライベートまたは保護アクセス制御の非静的データ メンバーの保持、インターフェイスの保持、および不変の実装ができます。
ソフトウェア開発者は通常、クラスの使用によって実装されるカプセル化などのオブジェクト指向の概念を必要とします。さらに、クラス指定子は型が既定ですべてのメンバーにプライベート アクセス制御を提供するよう強制します。これはカプセル化された型の実装にそのまま適しています。それで、読み取りやすく保守しやすいコードを作成するには、構造体や共用体ではなくクラスとして非 POD 型を定義します。
Polyspace 実装
チェッカーはコード内の構造体または共用体が POD 型ではないことを示すフラグを設定します。これには、テンプレートを使用してインスタンス化される構造体と共用体も含まれます。
C++ 言語の POD 型の簡単な説明については、前の節を参照してください。POD 型の詳細な仕様については、C++ リファレンス マニュアルを参照してください。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: メンバー アクセス制御 |
| カテゴリ: Advisory、Automated |
バージョン履歴
R2020b で導入