함수 호출 연산자 오버로딩( ()연산자 )
객체를 함수처럼 동작하게 하는 연산자
소스코드
#include <iostream>
using namespace std;
struct FuncObject {
public:
void operator()(int arg) const {
cout << "정수: " << arg << endl;
}
void operator()(int arg1, int arg2) const {
cout << "정수: " << arg1 << ',' << arg2 << endl;
}
void operator()(int arg1, int arg2, int arg3) const {
cout << "정수: " << arg1 << ',' << arg2 << ',' << arg3 << endl;
}
};
void main() {
FuncObject print;
cout << "객체 생성 후 암시적 호출\n";
print(10);
print(10, 20);
print(10, 20, 30);
cout << endl;
cout << "객체 생성 후 명시적 호출\n";
print.operator()(10); //객체 생성 후 암시적 호출
print.operator()(10, 20);
print.operator()(10, 20, 30);
cout << endl;
cout << "임시 객체 생성 후 암시적 호출\n";
FuncObject()(10); //객체 생성 후 암시적 호출
FuncObject()(10,20);
FuncObject()(10,20,30);
cout << endl;
cout << "임시 객체 생성 후 명시적 호출\n";
FuncObject().operator()(10); //임시 객체로 명시적 호출
FuncObject().operator()(10, 20);
FuncObject().operator()(10, 20, 30);
}
코드 내용
main함수 내 함수호출에 매개변수 갯수에 따라 오버로딩 하는 함수가 달라지는 것.
암시적 호출은 함수를 간접적으로 호출하는 것이고
명시적 호출은 함수를 직접적으로 호출하는 것이라 보면됨.
결과