2013-11-15 2 views
-2

정적 클래스 멤버 함수를 인스턴스화 할 필요가 없다는 것을 알고 있습니다. 그러나 클래스 멤버 함수의 조작은 항상 자신의 멤버 변수를 기반으로하므로 왜 여전히 정적 멤버 함수를 사용합니까? 누군가가 세부적인 예를 들어 말해 줄 수 있습니까? 미리 감사드립니다.정적 멤버 함수는 비 정적 멤버 변수를 수정할 수 없으므로 왜 여전히 사용해야합니까?

P. 하나의 클래스 멤버 함수에서 두 개의 스레드를 만들 때 두 스레드를 만들 때 스레드 콜백 함수 주소를 전달해야하는 프로그램을 작성했습니다. 스레드 콜백 함수도 같은 클래스의 멤버 함수가되기를 원합니다. 일부 참조에 따르면 콜백 함수가 클래스의 멤버 인 경우 정적이어야합니다. 정적 콜백에서 동일한 클래스의 다른 비 정적 함수를 호출 할 수 없으며 비 정적 멤버 변수를 수정할 수 없습니다. (영어는 제 2 언어이므로 잘 쓰지 못합니다. 좀 더 간결하게 설명 할 수 있기를 바랍니다 .-)

+1

질문이 명확하지 않습니다. 어떤 멤버 함수의 액션은 멤버 변수의 값에 기반하지 않는다. 그러한 함수들은'정적'일 수 있습니다. – Beta

답변

2

나는 예제 만 제공 할 것입니다. 당신이 당신의 클래스에 대한 선언 한 인스턴스 수를 계산하려면

int instance_count; 

같은 정적 멤버를 가질 수 있으며, 클래스 생성자에서 당신은 같은 INSTANCE_COUNT을 추가 할 수 있습니다

instance_count++; 

와의 소멸자 :

instance_count--; 

결과적으로 현재 프로그램에있는 인스턴스 수를 얻을 수 있습니다.

+0

이것은 정적 변수를 사용하는 예입니다. 그러나 문제는 정적 함수에 관한 것이 었습니다. – karadoc

+0

죄송합니다. 이 점을 상기시켜 줘서 고마워. – yanchong