본문 바로가기
기술자료/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