2011-07-29 6 views
0

클래스 내의 데이터 멤버는 const 일 수 있지만 정적 인 경우에만 가능합니다. 그렇지 않으면 클래스 내부의 상수를 초기화하는 생성자가 필요합니다.코딩하는 동안 클래스 내에 비 정적 상수 데이터 멤버를 선언하는 것이 적절합니까?

can we declare a const data member inside a class? //this was an interview question 

프로그래머가 클래스 내에서 상수를 선언하는 것이 적절하다고 생각합니다.

몇 가지 설명/이유를 알려주십시오. 이유는 무엇입니까?

답변

1

는 오프 과정을 수행 할 수 있습니다

struct A 
{ 
    A() : a(5) 
    { 
    } 
    const int a; 
}; 

int main() 
{ 
    A a; 
} 

이 데이터 멤버 A는, 구조체 A는 변경하지 않을 내부에 있다는 것을 의미한다.

+0

이 좋은 프로그래밍 습관이 그렇게하는 것입니다 (내 말은 어떤이 다른 좋은 방법) 그리고 데이터 회원이 사적인 것이라면? – munish

+0

@munish이 데이터 멤버가이 유형의 객체의 수명 동안 변경되면 안되면 const로 선언하십시오. Google에서 "const correctness"를 찾으십시오. –

1

짧은 대답 : 클래스 내에 정적 인 const 회원을 보유 할 수 있습니다.

여전히 값을 지정해야하므로 초기화 목록에 허용되는 유일한 위치입니다.

멤버가 실제로 일정한 경우에는 항상 그렇습니다. 내 말은, const-correctness는 주로 더 나은 코딩을 돕는 선택 도구이므로, 원한다면 사용하십시오. 나중에 감사 할 것입니다. 그리고 당신이 그것을 사용하지 않는다면 ... 잘 그것은 정말로 중요하지 않습니다!

1

클래스에 사용할 상수가 있고 클래스에 속해 있는지 확인하십시오.

예를 들어, 당신은 고유 한 ID를 가진 일부 데이터 유형이 말할 수, ID가 개체를 식별하는 그 때문에 변경하지 않습니다 :

class myData { 
    cont int ID; 
    myData(int newID) : ID(newID) {} 
}