メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

オブジェクト指向の欠陥

C++ オブジェクト指向プログラミングに関連する欠陥 (クラス設計の問題や継承階層での問題など)

これらの欠陥は C++ プログラミングのオブジェクト指向の側面に関連しています。この欠陥では、クラスの設計での問題や継承階層における問題が強調表示されます。欠陥には次のものがあります。

  • データ メンバーがコンストラクター内で初期化されないか不適切に初期化される

  • 基底クラスのメソッドが不適切にオーバーライドされる

  • データのカプセル化が破壊される

Polyspace 結果

*this はコピー代入演算子に返されませんoperator= メソッドが現在のオブジェクトを指すポインターを返さない
基底クラスの代入演算子が呼び出されていませんコピー代入演算子が、基底サブオブジェクトのコピー代入演算子を呼び出さない
基底クラス デストラクターが非バーチャルです派生クラス オブジェクトの削除にあたりクラスがポリモーフィックに動作できない
非トリビアルなクラス オブジェクトのバイト演算値の表現が不適切に初期化または比較される可能性がある
不完全なクラス ポインターの変換または削除不完全なクラスを指すポインターの削除またはキャスト
ソース オペランドを変更するコピー コンストラクターまたは代入演算子コピー操作によるソース オブジェクトのデータ メンバーの変更
コピー コンストラクターが初期化リストで呼び出されていませんコピー コンストラクターが一部のメンバーまたは基底クラスのコピー コンストラクターを呼び出さない
型に互換性がないためオーバーライドされません派生クラスのメソッドが virtual 基底クラスのメソッドをオーバーライドせずに隠している
typeid のオペランドとしてラムダが使用されていますラムダ式で typeid が使用されている
コンストラクターでメンバーが初期化されませんコンストラクターでクラスのメンバーの一部が初期化されない
明示的なキーワードがありませんコンストラクターまたはユーザー定義変換演算子に指定子 explicit がない
バーチャル継承がありません基底クラスが同じ階層内でバーチャルに継承され、また非バーチャルに継承されている
オブジェクトのスライス派生クラス オブジェクトが基底クラス パラメーターをもつ関数に値渡しされる
オーバーアラインの可能性のあるクラスの演算子 new がオーバーロードされていません割り当てられたストレージがオブジェクトのアライメント要件よりも小さい可能性がある
オーバーロードされたバーチャル関数の一部のみをオーバーライドします特定名をもつ継承されたバーチャル関数の一部をクラスがオーバーライド
カプセル化されたデータ メンバーに定数ではないハンドルが返されていますメソッドにより、オブジェクトの内部メンバーへのポインターまたは参照が返される
自己代入が演算子でテストされていませんコピー代入演算子で自己代入がテストされない

トピック

  • Bug Finder 欠陥グループ

    Bug Finder の欠陥チェッカーは、データ フロー、同時実行、数値などのグループに分類されています。