2017-10-26 3 views
0

변수의 의도 된 범위가 실제로 로컬 일 경우, 그렇게 유지하는 것이 의미가 있습니다. 이것은 내가 항상 해왔 던 것입니다. 그러나 나는 최근에 vim에서 일식으로 바뀌었고 모든 멤버 변수가 생성자에서 초기화되지 않은 경우 Eclipse에서 내 생성자를 플래그 지정합니다. 예를 들어 아래 코드에서 잘 컴파일됩니다. g ++에는 문제가 없습니다. 반면에 Eclipse에서는 'a'가 생성자에서 초기화되어야한다고 알려줍니다.반원들의 변수를 초기화하는 것은 나쁜 습관입니까?

이 경고가 관련성이 있거나 왜 모두 함께 무시할만한 이유가 있습니까? 반면에

class C 
{ 
public: 
    C(){} 
    ~C(){} 
    void foo(); 
}; 

void C::foo() 
{ 
    int a; 
} 

int main() { 
    C c; 
    return 0; 
} 
+3

초기화되지 않았습니다. 로컬 변수를 선언하고 있습니다. 사용하지 않은 지역 변수에 대한 경고가 표시 될 수 있습니다. – Ron

+4

'foo'에 대해 지역 변수 인 'a'가 생성자에서 초기화되어야하는 이유는 무엇입니까? – tadman

+0

나는 확실히 좋은 이유를 생각할 수 없다. – mreff555

답변

7

이클립스 '는이'생성자에서 초기화되어야한다는 것을 알려줍니다. 이 멤버 함수 C::foo()로컬 변수 때문에

a는 생성자 초기화되지있다. Eclipse는 당신에게 가짜 경고를 제공합니다.

+0

OP가 잘못된 예를 게시 한 것으로 의심됩니다. 이클립스가 가짜 경고를 보내는 것이 아닙니다. – hvd

+0

오른쪽. 나는 그것이 모든 변수들을 반원들 앞에서 선언하라고 말하고있는 것이라고 생각했지만 그것은 바보스럽고 지저분하다. – mreff555

+0

OP는 무엇입니까? – mreff555

관련 문제