인프런 커뮤니티 질문&답변

Ambition님의 프로필 이미지
Ambition

작성한 질문수

홍정모의 따라하며 배우는 C++

7.9 함수 포인터

함수 포인터 check_fnc에 관해 질문이 있습니다.

작성

·

351

0

#include <iostream>

#include <array>

using namespace std;

bool isEven(const int& number)

{

if (number % 2 == 0) return true;

else return false;

}

bool isOdd(const int& number)

{

if (number % 2 != 0) return true;

else return false;

}

void printNumbers(const array<int, 10>& my_array, bool (*check_fnc)(const int&)=isEven)

{

for (auto element : my_array)

{

if (check_fnc(element) == true) cout << element << " ";

}

cout << endl;

}

int main()

{

std::array<int, 10> my_array = { 0,1,2,3,4,5,6,7,8,9 };

printNumbers(my_array);

printNumbers(my_array, isOdd);

return 0;

}

에서 if (check_fnc(element) == true)부분인데요, check_fnc가 함수 포인터고 이것이 함수의 주소를 저장하니까 isEven으로 기본값을 설정하면, 포인터가 isEven으로 찾아가서 함수를 호출하는 것이 맞나요?

그리고 printNumbers(my_array, isOdd)부분에서는 check_fnc가 isOdd의 주소를 저장했으니까

if (check_fnc(element) == true)의 check_fnc가 isOdd를 호출하는 것도 맞나요??

답변 1

0

네, 그렇습니다 :)

Ambition님의 프로필 이미지
Ambition

작성한 질문수

질문하기