メインコンテンツ

AUTOSAR C++14 Rule M9-3-1

Const member functions shall not return non-const pointers or references to class-data

説明

ルール定義

const member functions shall not return non-const pointers or references to class-data.

根拠

const オブジェクトは、初期化後に変更できず、同じく const として宣言されているクラス メンバー関数しか呼び出すことができません。これらのメンバー関数がオブジェクトの状態を変更することは想定されていません。

const メンバー関数がクラスのデータ メンバーへの非 const ポインターまたは参照を返す場合は、開発者の想定に反して、この関数によってオブジェクトの状態が変更される可能性があります。この状況を回避するには、クラス データ メンバーへの参照またはポインターを返す const メンバー関数を定義するときに、戻り値の型を const として指定します。

Polyspace 実装

const メンバー関数が非 static データ メンバーへの非 const ポインターまたは参照を返す場合にのみ、Polyspace® はこのルールの違反にフラグを設定します。このルールは、static データ メンバーには適用されません。

トラブルシューティング

ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

すべて展開する

class A{
	
	private:
	
	int& rInt;
	public:
	
	int* getR() const{ //Noncompliant
		return &rInt;
	}
	
	const int* getConstR() const{ //Compliant
		return &rInt;
	}
};

この例では以下のようになります。

  • const メンバー関数 getR() は、非 const ポインターを返すため、ルールに違反します。

  • const メンバー関数 getConstR() は、const ポインターを返すため、ルールに準拠します。

チェック情報

グループ: クラス
カテゴリ: Required、Automated

バージョン履歴

R2019a で導入