2013-03-12 7 views
0

나는 코드의 구조는 다음과 같습니다함수의 선언과 사용을 구분하는 방법은 무엇입니까?

while (x > 0) { 
    something; 
    aaa::bbb::ccc some_name(
     x, 
     y 
    ); 
} 

내가 aaa::bbb::ccc some_name( 무엇을 이해할 수 없다. 함수 호출이라면 왜 시간을 지정해야합니까? aaa::bbb::ccc. 함수의 선언이라면 왜 while 루프에서 끝내고 왜 인자의 타입이 지정되지 않는가?

+2

매우 괴롭히는 ... –

+4

실제 코드 게시. – Pubby

+1

::는 범위 분석 연산자입니다. bbb ccc는 정적 멤버 또는 메소드 일 수 있습니다. – user1929959

답변

3

함수 호출에서 반환 형식을 지정하지 않으므로 함수 호출이 될 수 없습니다.

Pubby가 지적했듯이 개체 정의 일 가능성이 큽니다. some_nameaaa::bbb::ccc 유형의 오브젝트를 정의하고 xy을 생성자에 전달하십시오.

+3

또는 객체를 구성 중입니다 ... – Pubby

+0

하지만 왜 루프에서 수행됩니까? – Roman

+0

@Roman 왜 루프에서 끝나지 않을까요? –

0
당신이 최대 무엇 확실히 확실하지 않다

하지만 C++에서

:: 

scope-operator이라고하며 namespaces, variables in namespaces 또는 static 클래스 멤버에 액세스하는 데 사용됩니다.

일반적으로 함수 - 선언과 정의가 함수 및 메서드 외부에 나타납니다. 따라서 코드가 의미가 없습니다.

범위 연산자에 대해서는 here을 참조하십시오. 그리고 선언 대 정의에 대한 here.

+0

"일반적으로 선언과 정의가 함수 외부에 나타납니다"? 확실히 지역 변수를 광범위하게 사용합니다. 이는 지역 변수의 정의와 매우 유사합니다. –

+0

@JamesKanze 미안하지만 충분히 구체적이지 않았습니다. ** function ** - 선언과 정의에 대해 이야기하고있었습니다. 힌트를 가져 주셔서 감사합니다. –

2

이 특별한 경우에는 xy 인수를 사용하여 두 개의 매개 변수 생성자를 호출하여 aaa::bbb::ccc 유형의 개체 some_name을 생성 할 수 있습니다.

루프에서 완료되는 이유는 객체가 생성자 및/또는 소멸자 (예 : 스코프 가드의 형태 일 수 있음)에서 유용한 작업을 수행 할 수 있기 때문입니다.

+0

물론'x'와'y' 이름 타입이라면 함수 선언입니다. 이와 같은 간단한 경우에는 일반적으로 매우 명확합니다 (명명 규칙이 도움이됩니다). 보다 복잡한 경우에는 모호 할 수 있습니다. "대부분의 애매한 구문 분석"을 참조하십시오. –