필자는 함수 포인터에 대해 읽고 다른 함수의 매개 변수로 사용하고 있습니다. 내 질문에 포인터를 사용하지 않고 참조로 함수를 전달하는 방법을 무엇입니까? 나는 인터넷에서 대답을 찾으려고했지만 좋은 대답을 찾지 못했습니다. 나는 당신이 다음과 같이 참조로 변수를 전달할 수 있다는 것을 알고있다 : void funct(int& anInt);
. 어떻게 이와 비슷한 일을하겠습니까? 대신 변수에 대한 참조 대신 함수에 대한 참조가 매개 변수입니까? 또한 함수 본문에서 함수에 대한 참조를 어떻게 사용합니까?C++ : 참조 함수를 다른 함수로 전달하는 방법은 무엇입니까?
답변
#include <iostream>
using namespace std;
void doCall(void (&f)(int))
{
f(42);
}
void foo(int x)
{
cout << "The answer might be " << x << "." << endl;
}
int main()
{
doCall(foo);
}
건배 & HTH,
호기심에서 벗어난 이유는 함수에 대한 포인터 대신 함수에 대한 참조를 사용하려는 이유는 무엇입니까? – fredoverflow
@FredOverflow : 포인터가 null이거나 유효하지 않을 수 있기 때문에. 참조가 유효하고 널 (NULL 참조가 없음)이 아니거나 프로그램에 오류가 있음을 보장합니다. –
@Alf P. Steinbach : "프로그램에 오류가 있습니다."이론적으로는 좋지만 sometype 및 ref = * ptr과 같은 것이 있으면 포인터의 주소가 단순히 주소로 복사됩니다 참조에서 유효하지 않거나 null 일 수 있습니다. 위의 문장은'ptr'이 유효하지 않거나 null 일 때 정의되지 않은 행동이라고 말할 수 있습니다 만, 컴파일이나 실행시에는이 사실을 알 수 없으므로 프로그래머가 확신 할 수 있도록해야합니다 그것은 포인터를 사용하는 것과 같고 유효하고 널이 아닙니다. 그래서 나는 프로그래머에게 아무런 차이가 없다고 말한다. – newacct
참고 :. 당신은 기능을 전달할 수 없습니다. 함수에 대한 참조 또는 포인터 만 전달할 수 있습니다. –