증가 및 감소 (C++)
각각의 두 종류 때문에 증가 및 감소 연산자는 특별 한 범주에 속합니다.
Preincrement 및 postincrement
Predecrement 및 postdecrement
오버 로드 된 연산자 함수를 작성 하는 경우 접두사에 대해 별도 버전을 구현 하 고 버전 이러한 연산자의 후 위 유용 합니다.둘 사이 구분 하기 위해 다음 규칙 준수: 운영자의 접두어 양식을 정확 하 게 같은 방식으로 다른 단항 연산자입니다; 선언 후 위 폼 추가 형식의 인수를 받아들이는 int.
[!참고]
증가 또는 감소 연산자의 후 위 폼에 대 한 오버 로드 된 연산자를 지정 하는 경우 추가 인수 형식 이어야 합니다 int. 기타 형식 지정 오류가 발생 합니다.
다음 예제에서는 접두사가 정의 및 후 위 증가 및 감소 연산자에 대 한 방법을 보여 줍니다 있는 Point 클래스:
// increment_and_decrement1.cpp
class Point
{
public:
// Declare prefix and postfix increment operators.
Point& operator++(); // Prefix increment operator.
Point operator++(int); // Postfix increment operator.
// Declare prefix and postfix decrement operators.
Point& operator--(); // Prefix decrement operator.
Point operator--(int); // Postfix decrement operator.
// Define default constructor.
Point() { _x = _y = 0; }
// Define accessor functions.
int x() { return _x; }
int y() { return _y; }
private:
int _x, _y;
};
// Define prefix increment operator.
Point& Point::operator++()
{
_x++;
_y++;
return *this;
}
// Define postfix increment operator.
Point Point::operator++(int)
{
Point temp = *this;
++*this;
return temp;
}
// Define prefix decrement operator.
Point& Point::operator--()
{
_x--;
_y--;
return *this;
}
// Define postfix decrement operator.
Point Point::operator--(int)
{
Point temp = *this;
--*this;
return temp;
}
int main()
{
}
다음 함수 헤드를 사용 하 여 전역 파일 범위에서 동일한 연산자를 정의할 수 있습니다.
friend Point& operator++( Point& ) // Prefix increment
friend Point& operator++( Point&, int ) // Postfix increment
friend Point& operator--( Point& ) // Prefix decrement
friend Point& operator--( Point&, int ) // Postfix decrement
형식의 인수가 int 는 후 위 증분 형태의 나타냅니다 또는 감소 연산자 사용 되지 않습니다 일반적으로 인수를 전달 합니다.일반적으로 0 값을 포함 합니다.그러나이 다음과 같이 사용할 수 있습니다.
// increment_and_decrement2.cpp
class Int
{
public:
Int &operator++( int n );
private:
int _i;
};
Int& Int::operator++( int n )
{
if( n != 0 ) // Handle case where an argument is passed.
_i += n;
else
_i++; // Handle case where no argument is passed.
return *this;
}
int main()
{
Int i;
i.operator++( 25 ); // Increment by 25.
}
이러한 명시적인 호출이 아닌 다른이 값을 전달 하려면 앞의 코드와 같이 증가 또는 감소 연산자를 사용 하는 구문은입니다.이 기능을 구현 하는 간단한 방법을 추가/연산자를 오버 로드 하는 (+=).