본문 바로가기
개발 언어/cpp

cpp 증감 연산자 오버로딩 (전위 연산자, 후위 연산자)

by eeeun:) 2021. 12. 30.
반응형

전위 연산자와 후위 연산자가 똑같이 "operator++() {}" "operator--() {}" 형태인데 어떻게 두 개를 구분할까??

 

  전위 연산자 후위 연산자
파라미터 void int (int 값의 의미는 없고 단지 전위, 후위를 구분하기 위함)
리턴값 객체 자체 임시 객체
속도 빠름 느림 (객체의 새로 만들어 return하기에 속도가 느림)

 

| ✍️ 전위 연산자 예시

// void값을 받으면 전위 연산자임.
Fixed& Fixed::operator++(void) {
	this->setRawBits(this->getRawBits() + 1);

	return *this;
}

Fixed& Fixed::operator--(void) {
	this->setRawBits(this->getRawBits() - 1);

	return *this;
}

 

| ✍️ 후위 연산자 예시

// int값을 받으면 후위 연산자임.
Fixed Fixed::operator++(int _val) {
	(void)_val;
	Fixed temp;

	temp.rawBit = rawBit;
	this->rawBit++;

	return temp;
}

Fixed Fixed::operator--(int _val) {
	(void)_val;
	Fixed temp;

	temp.rawBit = rawBit;
	this->rawBit--;

	return temp;
}

rawBit는 private 변수인데, "temp.rawBit = rawBit;"가 왜 오류가 안 나는지 궁금하다면 밑에 링크 클릭!

https://developer-eun-diary.tistory.com/14

 

cpp 멤버 함수 안에서 자신과 동일한 클래스 객체 private 멤버 접근

밑에 코드를 보면 원래 temp.num은 private이라 바로 접근해서 값을 바꿀 수 없다 근데 저 코드를 컴파일해보면 오류가 안 난다!! 왜일까!?? class Sum { private: int num; public: void sum { // num이 private..

developer-eun-diary.tistory.com

 

알고리즘 공부를 할 때 속도를 위해서 후위 연산자를 쓰는 게 좋다고 이야기를 많이 들어서 이유가 궁금했었는데..!

드디어 궁금증 해결!!!

728x90

댓글