함수 호출 (C++)
괄호를 사용하여 호출된 함수 호출 연산자는 이항 연산자입니다.
구문
primary-expression ( expression-list )
설명
이 컨텍스트에서 primary-expression
이 첫 번째 피연산자이며, 빈 인수 목록일 수 있는 expression-list
가 두 번째 피연산자입니다. 함수 호출 연산자는 여러 매개 변수가 필요한 연산에 사용됩니다. 이는 expression-list
가 단일 피연산자가 아닌 목록이기 때문에 가능합니다. 함수 호출 연산자는 비정적 멤버 함수여야 합니다.
오버로드된 경우 함수 호출 연산자는 함수가 호출되는 방법을 수정하는 것이 아니라 지정된 클래스 형식의 개체에 연산자가 적용될 때 연산자가 해석되는 방법을 수정합니다. 예를 들어 다음 코드는 대개 무의미합니다.
Point pt;
pt( 3, 2 );
하지만 적절하게 오버로드된 함수 호출 연산자가 제공된 경우에는 이 구문을 사용하여 x
좌표 3 단위 및 y
좌표 2 단위를 오프셋할 수 있습니다. 다음 코드에 이러한 정의가 나와 있습니다.
// function_call.cpp
class Point
{
public:
Point() { _x = _y = 0; }
Point &operator()( int dx, int dy )
{ _x += dx; _y += dy; return *this; }
private:
int _x, _y;
};
int main()
{
Point pt;
pt( 3, 2 );
}
함수 호출 연산자는 함수 이름이 아닌 개체 이름에 적용됩니다.
함수 자체를 사용하기 보다는 함수에 대한 포인터를 사용하여 함수 호출 연산자를 오버로드할 수도 있습니다.
typedef void(*ptf)();
void func()
{
}
struct S
{
operator ptf()
{
return func;
}
};
int main()
{
S s;
s();//operates as s.operator ptf()()
}
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기