작성
·
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를 호출하는 것도 맞나요??