내 .cpp
에있는 전역 static
함수를 사용하여 인스턴스 데이터에 액세스하지 않아도되는 내 클래스에서 사용되는 유틸리티 함수의 클래스에서 private
(아마도 또한 static
) 함수를 사용하면 어떤 이점이 있습니까? 클래스를 구현하는 파일?
첫 번째 소리는 내게 더 깨끗하지만 두 번째 것은 실제로는이 기능이 .h
파일에 언급 될 필요가 없으므로 더 의미가 있습니다.C++의 비공개 함수와 정적 함수
답변
나는 개인 정적을 붙이지 않을 겁니다 함수가 필요하지 않은 경우에는 헤더 파일에 추가됩니다. 그들은 단지 헤더 파일을 오염시키고 더 많은 작업을 추가 할 것입니다.
하지만 클래스에 템플릿 메서드/함수가 있고 그 안에 도우미 함수를 사용하려는 경우 비공개 정적 함수가 필요할 수 있습니다.
전역 정적 함수 대신 개인 정적 함수를 사용하는 또 다른 이유는 개인 클래스 멤버 (변수, 함수)에 액세스 할 수 있다는 것입니다.
주어진 기능이 귀하의 class
과 관련이 있다면 귀하가 옳습니다. 귀하의 class
본문에 그들 private static
을 만들어야합니다.
[참고 :. 그 효용 함수가 전혀 관련되지 않는 경우 당신은 namespace
다른 백분율 클래스 또는 그들을 둘러싸하고 파일의 범위 내에서 유지에 대해 생각할 수]
클래스 구현과 관련 될 수 있습니다. , 대부분의 경우와 같이 클래스 인터페이스가 아닙니다. 이 경우에는 클래스 인터페이스를 오염시킬 필요가 없습니다 –
파일 고정 기능을 사용하십시오. 그들이 수업과 아무 상관이 없다면 거기에 두지 마십시오.
파일 정적 대신 익명의 네임 스페이스 함수를 사용하는 것이 좋습니다 –
"현대 C++"은 익명의 네임 스페이스에 함수를 사용하는 것을 권장하지만 기술적 인 이점은 없습니다. 사실 이러한 기능에는 외부 연결이 있으며 연결 속도가 느려질 수 있으므로 불리한 점이있을 수 있습니다. – zvrba
http://stackoverflow.com/questions/154469/unnamed-anonymous-namespaces-vs-static-functions –
private 함수가 클래스 멤버를 수정하지 않으면 전역 정적보다 이점이 없습니다. 클래스 내부 또는 외부에 차이가 없다.
- 1. 무엇합니까 ANSI-C의 정적 평균
- 2. alloca 함수와 오브젝티브 -c의 가비지 콜렉터
- 3. Objective C의 함수 포인터
- 4. C의 정적 인터페이스 #
- 5. Objective-C의 "개인 메서드"또는 정적 함수. 어느 것을 사용해야합니까?
- 6. C에서의 정적 함수
- 7. 함수 이름을 정적 라이브러리에서 추출
- 8. Objective-C의 OR 함수
- 9. c의 scanf() 함수
- 10. c의 인라인 함수
- 11. Objective-C의 함수 구문
- 12. C의 일반 함수 포인터
- 13. 객관적인 C의 정적 이니셜 라이저
- 14. Obj-C의 정적 전역 변수?
- 15. "::"비 정적 함수 호출에 대한
- 16. 공개/비공개/정적 방법은 언제 사용해야합니까?
- 17. Objective-C의 비 멤버 함수
- 18. on_exit() 함수와 atexit() 함수 사이에 차이점이 있습니까?
- 19. C++ : 함수 포인터를 멤버 함수와 함께 사용
- 20. 정적 멤버 함수
- 21. PHP : 정적 함수 사용
- 22. 체커를위한 정적 평가 함수
- 23. JScript의 정적 함수?
- 24. 정적 변수 및 함수
- 25. 비 정적 대 정적 함수 및 변수
- 26. 비 정적 및 정적 데이터 및 함수
- 27. 정적 Javascript에 정적 값 전달 함수
- 28. iPhone : Objective-C의 정적 메서드와 sharedManager
- 29. 클래스 로딩시 Objective-C의 정적 초기화 도구
- 30. 함수 로컬 정적 변수가 함수 인라이닝을 방지합니까?
관련 항목 : http://stackoverflow.com/questions/2739146/c-oop-which-functions-to-put-into-the-class –