C++의 특징이라고 한다면 포인터를 말할 수 있다.
그럼 함수도 포인터로 이용할 수 있지 않을까??
정의
포인터는 다른 변수의 주소를 저장하는 변수이다.
함수 포인터는 다른 함수의 주소를 저장하는 변수이다!
사용 방법은
반환 타입 (*변수이름) (매개변수)
int (*cir)(int, int);
함수 포인터로 계산기를 만들어보면서 설명하겠습니다.
코드
#include <iostream>
#pragma warning(disable: 4996)
void plus(int _v1, int _v2)
{
std::cout << _v1 + _v2 << std::endl;
}
void minus(int _v1, int _v2)
{
std::cout << _v1 - _v2 << std::endl;
}
void multiple(int _v1, int _v2)
{
std::cout << _v1 * _v2 << std::endl;
}
void divide(int _v1, int _v2)
{
std::cout << _v1 / _v2 << std::endl;
}
int main()
{
void(*cir)(int, int) = nullptr;
int value = 0;
char sign = 0;
int value2 = 0;
scanf("%d %c %d", &value, &sign, &value2);
switch (sign)
{
case '+' :
cir = +
break;
case '-':
cir = −
break;
case '*':
cir = &multiple;
break;
case '/':
cir = ÷
break;
default:
break;
}
cir(value,value2);
return 0;
}
반환 타입 (*변수이름) (매개변수)
void(*cir)(int,int);
cir 함수 포인터는 반환 값 void 매개변수가 int, int가 들어오는 함수를 담을수가 있다.
scanf로 value, sign, value에 값을 받은뒤
switch문으로
사칙 연산에 해당하는 case문으로 이동후
cir 함수 포인터에 각 계산식에 맞는 함수의 포인터를 넣어주면 된다!.
cir 은 plus를 가리킬수도있고!
minus, multiple, divide를 다 가리킬수있다!
'게임 프로그래밍 > C++ 기초' 카테고리의 다른 글
C++ 바이트패딩 Byte Padding (두번째!) (4) | 2020.05.13 |
---|---|
C++ void* 보이드 포인터 (0) | 2020.05.11 |
C++ 가변 인자 템플릿 (0) | 2020.05.05 |
C++ 가변인자 (1) | 2020.05.03 |
C++ 가상함수테이블(Virtual function table) (3) | 2020.05.02 |