2017-04-02 8 views
0

は、以下に示すように、私はクラスSensorがあると仮定:C++ - クラス内のクラスオブジェクトプロパティではない変数を持つことは悪い習慣ですか?

class Sensor 
{ 
    public: 
     Sensor(); 
     array <float, 3> marker_pos(float, float, float); 

    private: 
     float range; 
     float phi; 
     array <float, 3> temp; 
     int flag = 0; 
}; 

変数rangephiプロパティまたはセンサーオブジェクトの変数です。しかし、変数tempflagは、関数marker_poseの内部で使用される通常の変数に過ぎません。

1.クラス内/宣言tempflagを定義するための悪い習慣ですか?

2.marker_poseの中で定義/宣言すると、その関数を呼び出すたびに定義されます。それは良いアイデアですか?このような状況に従うことがベストプラクティスになりますどのような

3.

+4

1.はい。 2.はい。 3.あなたのコードと代替(2)交換することはできませんことを1と2 –

+1

を参照してください。注:(2)では、 'marker_pos'の複数、同時通話はすべて独立して動作します。与えられたコードで、彼らは競争します。さらに、与えられた 'marker_pos'はリエントラントではありません。だから、私はその質問が実際によくポーズされていないと言いたい。 –

答えて

5

変数は常に最小限の有効範囲で定義する必要があります。変数が関数内でのみ使用されている場合は、クラス内ではなく関数内で定義する必要があります。

+0

だから、関数が実行された後に、これらの変数は破壊され、右、メモリリークがないでしょうか? –

+1

はい。クラスが使用するすべての型について、それらの型のメモリリークの可能性はありません。 –

+0

遅延評価のためには、/宣言し、彼らが唯一の関数の中で使用されている場合でも、クラスの変数を定義するのに有効であることができます。 – zett42

0

C++では、できるだけ遅く変数を宣言する必要があります(範囲がの)。

異なる変数のlife spanあなたのコードの可視性を強化し、あなたのプログラムのデバッグおよびメンテナンスを容易にすることができる最小限に抑えます。

関連する問題