함수 호출 연산자 오버로딩( ()연산자 )
객체를 함수처럼 동작하게 하는 연산자
소스코드
#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함수 내 함수호출에 매개변수 갯수에 따라 오버로딩 하는 함수가 달라지는 것.
암시적 호출은 함수를 간접적으로 호출하는 것이고
명시적 호출은 함수를 직접적으로 호출하는 것이라 보면됨.
결과
'C++ > STL' 카테고리의 다른 글
[STL] 클래스 타입 변환 연산자 오버로딩 (0) | 2025.02.09 |
---|---|
[STL] 타입 변환 연산자 오버로딩 (0) | 2025.02.09 |
[STL] 스마트 포인터 (0) | 2025.02.09 |
[STL] 배열 인덱스 연산자 오버로딩 (0) | 2025.02.09 |
[STL] 연산자 오버로딩 (0) | 2025.02.08 |