2011-07-27 3 views
17

.cpp에있는 전역 static 함수를 사용하여 인스턴스 데이터에 액세스하지 않아도되는 내 클래스에서 사용되는 유틸리티 함수의 클래스에서 private (아마도 또한 static) 함수를 사용하면 어떤 이점이 있습니까? 클래스를 구현하는 파일?
첫 번째 소리는 내게 더 깨끗하지만 두 번째 것은 실제로는이 기능이 .h 파일에 언급 될 필요가 없으므로 더 의미가 있습니다.C++의 비공개 함수와 정적 함수

+1

관련 항목 : http://stackoverflow.com/questions/2739146/c-oop-which-functions-to-put-into-the-class –

답변

11

나는 개인 정적을 붙이지 않을 겁니다 함수가 필요하지 않은 경우에는 헤더 파일에 추가됩니다. 그들은 단지 헤더 파일을 오염시키고 더 많은 작업을 추가 할 것입니다.

하지만 클래스에 템플릿 메서드/함수가 있고 그 안에 도우미 함수를 사용하려는 경우 비공개 정적 함수가 필요할 수 있습니다.

전역 정적 함수 대신 개인 정적 함수를 사용하는 또 다른 이유는 개인 클래스 멤버 (변수, 함수)에 액세스 할 수 있다는 것입니다.

5

주어진 기능이 귀하의 class과 관련이 있다면 귀하가 옳습니다. 귀하의 class 본문에 그들 private static을 만들어야합니다.

[참고 :. 그 효용 함수가 전혀 관련되지 않는 경우 당신은 namespace 다른 백분율 클래스 또는 그들을 둘러싸하고 파일의 범위 내에서 유지에 대해 생각할 수]

+1

클래스 구현과 관련 될 수 있습니다. , 대부분의 경우와 같이 클래스 인터페이스가 아닙니다. 이 경우에는 클래스 인터페이스를 오염시킬 필요가 없습니다 –

1

파일 고정 기능을 사용하십시오. 그들이 수업과 아무 상관이 없다면 거기에 두지 마십시오.

+2

파일 정적 대신 익명의 네임 스페이스 함수를 사용하는 것이 좋습니다 –

+1

"현대 C++"은 익명의 네임 스페이스에 함수를 사용하는 것을 권장하지만 기술적 인 이점은 없습니다. 사실 이러한 기능에는 외부 연결이 있으며 연결 속도가 느려질 수 있으므로 불리한 점이있을 수 있습니다. – zvrba

+0

http://stackoverflow.com/questions/154469/unnamed-anonymous-namespaces-vs-static-functions –

0

private 함수가 클래스 멤버를 수정하지 않으면 전역 정적보다 이점이 없습니다. 클래스 내부 또는 외부에 차이가 없다.