"const"를 좋아합니다. 나는 "const"가되어야하는 모든 변수와 메소드를 "const"라고합니다. 문제는 변수 또는 메소드가 "const가되어야한다"는 여부는 호출 트리의 메소드/변수에 따라 달라집니다. 코드 바디를 정적으로 검사하고 "bottom-up en-const-ification"을 수행하기위한 도구 나 프로세스가 있습니까?C++ 변수를 const로 지정
5
A
답변
6
나는 당신의 질문에 대한 답을 모르는,하지만 난 변수 또는 "이 CONST되어야한다"방법은 더 아래의 방법/변수에 따라 달라집니다
여부는 주장에 대해 주장하고 싶습니다 호출 트리
실제로 const는 논리적 레벨에 있어야합니다. 나는. 논리적으로 변경되지 않아야하는 경우 const로 표시해야합니다. 나중에 그렇다면 컴파일러 오류가 발생하고 변경 사실 또는 초기 가정을 재검토해야합니다.
규칙은 다음과 같습니다
뭔가 CONST 인 경우 뭔가가 사실상 변경되지 않은 경우,이보다
다소 변경 될 수 없습니다
, 다음의 그것을 만들어 보자 const
0
다양한 정적 그렇게 할 수있는 분석 도구. Gimpel Flexelint가 떠오른다.
이렇게 말한 결과, 꽤 옳은 것처럼 보이는 결과를 얻을 수 있습니다. 예를 들어, 주어진이 :
class Wibble {
Some_Implementation_Detail *stuff; //PIMPL idiom
public:
void set_something(int a) { stuff->set(a); }
};
다음 set_something const
수 있습니다. 이것은 기술적으로 정확하지만 아주 유용하지는 않습니다. 논리적으로이 경우에는 const
이 아니기 때문입니다.
관련 문제
- 1. 변수를 const로 변환
- 2. 포인터를 const로 만들기 C++
- 3. C++ #defines를 const로 바꾸는 법
- 4. C# 컴파일러는 var를 const로 변환하여이 코드를 최적화할까요?
- 5. 이러한 참조 매개 변수를 const로 선언하거나 값으로 전달해야하는 이유는 무엇입니까?
- 6. const로 문제가 있습니다.
- 7. 기호를 무시하면서 변수를 지정 하시겠습니까? (C++)
- 8. C 변수를 사용한 메모리 주소 지정
- 9. in C++ 왜 오버로드 된 함수에서 참조 매개 변수를 const로 선언합니까?
- 10. 함수 포인터를 const로 반환하려면 어떻게해야합니까?
- 11. 초기화 후 포인터를 const로 만듭니다.
- 12. 임시 변수가 const로 작동하지 않음
- 13. 최적화를 위해 값을 const로 복사하십시오.
- 14. 배열에서 const로 특정 요소 선언하기 C++, 스도쿠 해결 자
- 15. C++에서 "this"가 비 const로 사용되지 않는 이유
- 16. const로 선언 할 수있는 타입은 무엇입니까?
- 17. 비 const가 래퍼 템플릿의 const로 변환하도록 허용
- 18. C++에서 클래스의 정적 변수를 초기화 하시겠습니까?
- 19. 함수에서 const 매개 변수를 사용하는 C 프로그래밍
- 20. std :: initializer_list를 const로 변경하는 작업이 필요합니까?
- 21. std :: map 키를 const로 만드는 것이 합리적입니까?
- 22. const 객체의 const 값을 const로 반환해야합니까?
- 23. ld : 중복 심볼 - const로 인해 발생했습니다
- 24. C# : 문자열 변수를 사용하여 다른 요소에 호출하고 이름 지정
- 25. C# 형식 지정 생성자에서 매개 변수를 전달하는 방법은 무엇입니까?
- 26. 매개 변수를 전달할 때 사용자 지정 연산자 오류가 발생했습니다. C++
- 27. strtol에 대한 C# 동등 물 (기본 매개 변수를 지정) 찾기
- 28. C# console app, 변수를 사용하여 프로세스 이름 지정
- 29. 사용자 지정 사용자 지정 C#
- 30. 요구 사항 스 니펫을 var에서 const로 전환하는 방법은 무엇입니까?
'const'를 사용하는'const' 멤버 함수/함수 만 사용했기 때문에'const'를 만들면 안됩니다. 개념적으로 변경해서는 안되기 때문에 'const'로 만들어야합니다. – BoBTFish