본문 바로가기
기술자료/C C++

함수 호출 연산자 () 오버로딩 Function Call Operator () Overloading in C++

by 와이즈캣 2020. 1. 26.
728x90
반응형

c++은 객체 이름만으로 호출가능한 함수를 만들 수 있으며 이와 관련된 호출방법을 지원한다.
이 방법을 사용하기 위해서 준비된 키워드가 operator ()이다.
객체 이름의 함수를 클래스 정의시 바로 적시할 수 없으므로 이런 키워드가 고안된 듯 하다.

아래에 관련 사례에 대해 소스를 작성해 보았다.
관련해서 방문자들에게 도움이 되길 바란다.

#include <iostream>
using namespace std;
class wowcat
{
public:
// 정의 방법1
int operator() (int iArg1, int iArg2)
{
int iNum = iArg1 + iArg2;
return iNum;
}
// 정의 방법2
int operator() (int, int, int);
};
// 정의 방법2
int wowcat::operator() (int iArg1, int iArg2, int iArg3)
{
int iNum = iArg1 + iArg2+ iArg3;
return iNum;
}
int main()
{
wowcat Obj1;
cout << "사용 방법 1-1 : " << Obj1.operator()(1, 2) << endl;
cout << "사용 방법 1-2 : " << Obj1(2, 3) << endl << endl;
cout << "사용 방법 2-1 : " << Obj1.operator()(1, 2, 3) << endl;
cout << "사용 방법 2-2 : " << Obj1(2, 3, 4) << endl << endl;
// 함수 포인터 방법
int (wowcat:: * fp1)(int, int) = &wowcat::operator(); // 1
int (wowcat:: * fp2)(int, int, int) = &wowcat::operator(); // 2
cout << "함수 포인터 1 : " << (Obj1.*fp1)(10, 100) << endl;
cout << "함수 포인터 2 : " << (Obj1.*fp2)(10, 100, 1000) << endl;
return 0;
}
728x90