전위 연산자, 후위 연산자_소스코드

phoenixKim·2022년 5월 9일
0

temp

목록 보기
5/11

Tip : 후위 연산자 보다 전위 연산자를 사용하라는 이유에 대해서

: 후위 연산자는 객체를 복사 받고 반환하므로, 2번의 생성, 소멸이 발생함.
-> 전위의 경우는 참조로 반환하므로, 속도가 빠름.
하지만, 최적화되어 있어서 후위로 해도 된다고 함.

소스코드

#include <stdio.h>

#include <iostream>
using namespace std;

class Point
{
private : 
	int x_, y_;
public : 
	Point() = default;
	Point(int _x, int _y) : x_(_x), y_(_y){}
	void Print() const { cout << x_ << " " << y_ << endl; }

	// 후위 연산자.
	Point operator++(int)
	{
		Point p1(*this);
		++x_;
		++y_;
		return p1;

	}
	// 전위 연산자.
	Point& operator++()
	{
		++x_;
		++y_;

		return *this;
	}
};

int main()
{
	Point p1(1, 1);
	//====전위 증감 연산====
	++p1;
	p1.Print();

	//int n; ++++n; 가능함. => 값 반환의 경우, 임시객체를 만드므로, 참조타입을 반환해야 함! : 책 참고.
	++++p1;
	p1.Print();
	//====전위 증감 연산====

	//====후위 증감 연산====
	p1++;
	p1.Print();

	//n++++; 의 경우, 컴파일 에러이므로 const를 멤버 함수에 붙여야 하지만, 굳이!
	p1++++;
	p1.Print();
	//====후위 증감 연산====

	//int n = 0;
	//++++n;
	//n++++;
}

profile
🔥🔥🔥

0개의 댓글

관련 채용 정보