전위 후위 연산자 오버로딩
연산자 오버로딩
* ++연산자나 --연산자는 전위, 후위가 따로 있다.
* 연산자 오버로딩을 할 때 전위, 후위를 구분하는 방법은
매개변수 int의 유무이다.
전위, 후위 구분 방법
* operator++()는 전위 연산 오버로딩이고,
operator++(int)는 후위 연산 오버로딩이다.
* 매개변수에 의미없는 int를 넣어주는 것이 구분 방법이다.
후위 연산은 복사가 일어난다.
* 후위 연산은 나중에 연산이 일어난다고 생각할 수 있다.
* 하지만 <연산 전 데이터> 와 <연산 후 데이터>를 모두 만들어서
<연산 전 데이터>를 반환하는 것이다.
* <연산 전 데이터> == 새로 복사한 데이터
<연산 후 데이터> == 기존 데이터에 연산
* 따라서 후위 연산 오버로딩 할때
데이터 복사가 일어나 연산량이 많아질 수 있다.
코드
class A {
public:
A(int a, int b) {
_a = a;
_b = b;
}
A operator++() {
cout << "기본 : 전위 연산자" << endl;
_a++;
_b++;
return *this;
}
A operator++(int) {
cout << "매개변수 int : 후위 연산자" << endl;
A temp = A(_a, _b);
_a++;
_b++;
return temp;
}
friend std::ostream& operator << (std::ostream& out, const A& a)
{
out << "_a : " << a._a << "\n_b : " << a._b;
return out;
}
private:
int _a;
int _b;
};
int main(){
A a1 = A(1, 2);
A a2 = A(1, 2);
cout << a1++ << endl;
cout << a1 << endl;
cout << "---------------------------" << endl;
cout << ++a2 << endl;
cout << a2 << endl;
}
귀여운 그림은 낡은 창고님이 그리셨습니다.
반응형
'C++' 카테고리의 다른 글
[C++] next_permutation 함수 (0) | 2023.11.18 |
---|---|
[C++] const 멤버 함수 (0) | 2023.01.05 |
[C++] 직접 만들어보는 std::list 라이브러리 (0) | 2022.12.25 |
[C++] 직접 만들어보는 std::vector 라이브러리 (0) | 2022.12.23 |
[C++] STL - vector (0) | 2022.12.22 |