2013-10-24 2 views
3

나는 멍청하니 이것이 나의 첫 번째 게시물이다.매개 변수 끝에 앰퍼샌드 '&'연산자

'&'문자, 나는, 참조, 주소 및 논리 연산자 등의 일반적인 사용을 이해 관련하여

... 그러나

, 나는려고되었을 때 부스트 난수 발생기 기능이 작동하기 , 나는 전에 보지 못했던 '&'문자의 또 다른 사용법을 발견했습니다 ... (웹상에서) 그것에 대한 명시적인 문서가 없습니까.

아래 '&'은 END OF 파라미터 mt19937 &에 있습니다.

boost::variate_generator<boost::mt19937&, boost::uniform_int<> > die(gen, dist); 

이것은 무엇입니까? 어떻게 든 참조로 사용되었다고 가정하고 있지만 매개 변수 앞에 '&'을 넣으려고하면 컴파일러에서 용납 할 수 없다고 말합니다.

모든 설명을 이해할 수 있습니다.

NK.

답변

6
변수 앞에 앰퍼샌드 종류 후 앰퍼샌드 그래서 boost::mt19937&가 기준이며, 참조 형식

int& b = a; 
std::cout << b << std::endl; // 3 
a = 4; 
std::cout << b << std::endl; // 4 

boost::mt19937이 유형이라고한다

int a = 3; 
std::cout << &a << std::endl; // 0x12345678 or similar 

당신에게 그 변수의 주소를 제공

형식을 boost::mt19937으로 입력하십시오. 전에 앰퍼샌드를 넣는 것은 (&boost::mt19937) 형식의 주소를 가져올 수 없으므로 의미가 없습니다.

+0

빠른 답장을 보내 주신 David 께 감사드립니다. 그건 의미가 있습니다 ... 나는 boost :: mt19937이 일종의 변수가 아니라 유형이라고 생각한 것입니다. boost :: mt19937이 타입이라는 것을 감안할 때 그것은 의미가 있습니다. – NK2013

+0

그래서 이것에 대해 좀 더 연구하기 위해, 템플릿을 ... 인수로 TYPE을 전달할 필요가 있다고 생각합니다. – NK2013

+0

"템플릿을 사용할 때 형식을 인수로 전달합니다 ...." – NK2013