본문 바로가기
Programming/C C++

prefix increment operator vs. postfix increment operator

by Eisen Sophie 2020. 10. 12.

프로그래밍을 처음 시작하는 사람들일 수록 

 

for문등을 사용할때 i++를 많이 사용하는 경향들이 있다.

 

과연 저 방법은 프로그래밍에서는 ++i보다 좋은 방법일까?

 

오늘은 i++ 와 ++i를 비교 해보고 둘중 무엇을 사용해야지 더 좋은 프로그램에 좀더 가까워 질수 있는지 알아 보겠다.

 

이둘은 언뜻 보기에는 차이가 없어 보이나, 

 

내가 직접 구현을 해보면 그 차이를 알수가 있다.

 

class INT
{
	int val;

public:
	INT() { };
	INT(int n ): val{ n } {}

	//++INT :prefix increment operator
	INT& operator++() { 
		++val;
		return *this;
	}

	//INT++ :postfix increment operator
	INT operator++(int) {
		INT temp{ *this };
		++(*this);
		return temp;
	}

};

내가 직접 구현한 클래스 내부에 operator++로 prefix increment와 postfix increment를 따로 구현 해봤다.

 

postfix increment의 경우 한줄이 더 들어간다.

 

각줄을 분석해보면,

//INT++ :postfix increment operator
	INT operator++(int) {
		INT temp{ *this }; //임시객체
		//return val; //내 현재 값을 리턴한다. 
		++(*this); //그 후에 나를 1증가 시킨다.
		return temp;

		//이렇게 하면 메모리가 왔다가 갔다가 하는 헛 삽질을 한다.
		//그렇기에 아무도 사용하지 않는다. 라는 결론이 나오게 된다.
	}

 

결론은 prefix increment를 사용하자는 것이다.

 

물론 누군가는 "야 오바하지 마라 저 한줄 늘어난거 가지고 너처럼 난리냐?"라고 할수도 있다.

 

그러나 나의 생각은 다르다.

 

저러한 연산자 하나도 내부가 어떻게 구현이 되어 있는지 파악하고,

 

그렇기에 무엇이 더 좋은지를 아는 프로그래머의 자세와 지식의 범위 깊이는

 

그것들을 모르는 프로그래머의 자세와 지식과는 다르기 때문이다.

'Programming > C C++' 카테고리의 다른 글

operator Overloading  (0) 2021.01.07
Garbage Collection & Reference Counting  (0) 2020.10.22
Lambda를 써야하는 이유와 사용 방법  (0) 2020.10.16
C++ 정적 바인딩과 동적 바인딩  (0) 2020.09.29