2011-09-21 4 views
1

가끔은 다른 사람의 코드에서 이것을 참조하십시오 :왜 foo() 대신 * foo()라는 메서드를 만들고 싶습니까?

public void *foo() { 
... 
} 

public void bar() { 
... 
} 

그러나 *의 의미가 무엇인지 이해하지 못했으며 public void *foo()public void foo()간에 차이가 있습니까?

*** 여기 C++ 코드입니다!

+0

무슨 소리가나요? – c0da

+1

오프 주제입니다. 스택 오버플로가 발생할 수 있습니다. 그 동안, 훌륭한 매뉴얼을 읽으십시오. –

+0

물론 같은 답변 (RTFineM)도 제공됩니다. –

답변

10

public void *foo()은 void 포인터 (본질적으로 아무것도 될 수 있음)를 반환하는 공용 함수입니다. 포인터에 대한 자세한 문서는 http://www.cplusplus.com/doc/tutorial/pointers/ (특히 무효 포인터 섹션)에서 찾을 수 있습니다.

public void *foo()public void* foo()은 동일하며 *의 위치는 순전히 스타일 일뿐입니다 (스타일은 다른 곳에서 사용될 때 의미가있을 수 있음).

public void foo()은 아무 것도 반환하지 않는 공용 함수입니다.

+2

C++에서'public'을 사용할 수 있습니까? 나는 그것을 본 기억이 없다. 그러나 나는 최근에 3 개의 다른 언어로 크게 프로그래밍되어 있었고, 모두 혼란 스럽다. –

+0

맞습니다. 서명은'public :'이어야합니다. OP의 예제를 사용하고 있었다 : –

+3

문법에 대한 약간의 고상함 : 문법적으로 *는 타입이 아닌 변수 이름에 바인딩된다. 그래서'int * foo, bar'는 하나의 int 포인터 변수 (foo)와 하나의 plain을 선언한다. int (bar)는 구문이 제시하지 않는 것입니다. 'int * foo, bar'는 조금 더 명백하게 만듭니다. – tdammers

2

간격이 혼동을줍니다. void *foo(int)void* foo(int)과 같습니다. 전자는 void *을 반환하고 후자는 아무 것도 반환하지 않습니다. 어떤 사람들은이 혼동을 피하기 위해 '*'를 정확하게 입력하는 것을 선호합니다.

관련 문제