2017-04-02 6 views
0

가정한다 I는 다음과 같이 클래스 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 내에서 사용되는 정상 변수 일뿐입니다.

tempflag을 클래스에 정의/선언하는 것은 나쁜 습관입니까?

2.marker_pose 안에 정의/선언하면 해당 함수를 호출 할 때마다 정의됩니다. 그거 좋은 생각이야?

이러한 상황에서 따라야 할 모범 사례는 무엇입니까?

+4

1. 예. 2. 예. 3. 1과 2를 참조하십시오. –

+1

코드와 대체 코드 (2)는 서로 바꿔 사용할 수 없습니다 : (2)를 사용하면'marker_pos'를 여러 번 호출 할 때 모두 독립적으로 동작합니다. 주어진 코드로 그들은 경쟁합니다. 또한, 주어진'marker_pos'는 재 입력이 아닙니다. 그래서 나는 그 질문이 실제로 좋지 않은 것이라고 말하고 싶습니다. –

답변

5

최소한 가능한 범위에서 변수를 정의해야합니다. 따라서 변수가 함수 내에서만 사용되는 경우 함수는 클래스가 아니라 함수에서 정의해야합니다.

+0

그래서 함수가 실행 된 후,이 변수들은 파괴되고 아무런 메모리 누수도 없을 것입니다, 그렇습니까? –

+1

예. 클래스에서 사용하는 모든 유형에 대해 이러한 유형의 메모리 누출 가능성은 없습니다. –

+0

lazy evaluation의 경우, 함수 내에서만 사용되는 경우에도 클래스의 변수 선언/정의가 유효 할 수 있습니다. – zett42

0

C++에서는 가능한 한 늦게 변수를 선언해야합니다 (범위가 인 ).

다른 변수의 life span가시성 코드의디버그 및 프로그램의 유지 보수을 완화을 향상시킬 수 최소화합니다.