반응형
오늘 공부한 내용📓
- C++
개념 공부
함수 포인터와 멤버 함수 포인터
- 함수 포인터
- 함수의 주소를 저장하고 호출하는 포인터
int add (int a, int b)
{
return a + b;
}
int subtract (int a, int b)
{
return a - b;
}
int main()
{
int (*funcPtr)(int, int); //함수 포인터 선언
funcPtr = add; // add 함수를 가리키도록 초기화
int result = funcPtr(5, 3); //함수 포인터를 통한 함수 호출
std::cout << result << std::endl; //8 출력
funcPtr = subtract; //subtract 함수를 가리키도록 초기화
result = funcPtr(5, 3); //함수 포인터를 통한 함수 호출
std::cout << result << std::endl; //2 출력
return 0;
}
- 함수 포인터 배열
int add (int a, int b)
{
return a + b;
}
int subtract (int a, int b)
{
return a - b;
}
int main()
{
int (*funcPtr[2])(int, int); //함수 포인터 배열 선언
funcPtr[0] = add; // add 함수를 가리키도록 초기화
funcPtr[1] = subtract //subtract 함수를 가리키도록 초기화
int result = funcPtr[0](5, 3); //함수 포인터 배열을 통한 함수 호출
std::cout << result << std::endl; //8 출력
result = funcPtr[1](5, 3); //함수 포인터 배열을 통한 함수 호출
std::cout << result << std::endl; //2 출력
return 0;
}
- 멤버 함수 포인터
- 클래스의 멤버 함수의 주소를 저장하고 호출하는 포인터
- 클래스의 인스턴스를 통해 호출되어야 함
class Calculator
{
public:
int add (int a, int b)
{
return a + b;
}
int subtract (int a, int b)
{
return a - b;
}
}
int main()
{
Calculator cal;
int (Calculator::*funcPtr)(int, int); //멤버 함수 포인터 선언
funcPtr = &Calculator::add; //add 멤버 함수를 가리키도록 초기화
int result = (cal.*funcPtr)(5, 3); //멤버 함수 포인터를 통한 함수 호출
std::cout << result << std::endl; //8 출력
funcPtr = &Calculator::subtract; //subtract 멤버 함수를 가리키도록 초기화
result = (cal.*funcPtr)(5, 3); //멤버 함수 포인터를 통한 함수 호출
std::cout << result << std::endl; //2 출력
return 0;
}
- 멤버 함수 포인터 배열
- 함수 포인터와 멤버 함수 포인터는 다른 타입으로 취급되며 호환되지 않음
class Calculator
{
public:
int add (int a, int b)
{
return a + b;
}
int subtract (int a, int b)
{
return a - b;
}
}
int main()
{
Calculator cal;
int (Calculator::*funcPtr[2])(int, int); //멤버 함수 포인터 배열 선언
funcPtr[0] = &Calculator::add; // add 함수를 가리키도록 초기화
funcPtr[1] = &Calculator::subtract //subtract 함수를 가리키도록 초기화
int result = (cal.*funcPtr[0])(5, 3); //멤버 함수 포인터를 통한 함수 호출
std::cout << result << std::endl; //8 출력
result = (cal.*funcPtr[1])(5, 3); //멤버 함수 포인터를 통한 함수 호출
std::cout << result << std::endl; //2 출력
return 0;
}
제가 공부한 내용을 기록하고 있습니다.
혹시 수정이 필요한 부분이 있다면, 댓글로 지적 부탁드립니다!
선한 관심과 도움 감사드립니다😊
반응형
'TIL::Today I Learn' 카테고리의 다른 글
[TIL] 20230707 (0) | 2023.07.08 |
---|---|
[TIL] 20230705 (0) | 2023.07.06 |
[TIL] 20230622 (0) | 2023.06.24 |
[TIL] 20230621 (0) | 2023.06.22 |
[TIL] 20230620 (0) | 2023.06.21 |