#9 [c++]단항 연산자 중복

정상준·2022년 11월 5일
0

c++

목록 보기
5/25

📝 단항 연산자 중복

  • 정의
    • 피 연산자가 하나인 연산자
  • 종류
    • 전위 연산자
      • ++val, --val
    • 후위 연산자
      • val++, val--

✏️ 전위 ++연산자 중복

#include <iostream>
using namespace std;

/* 
radius : 1,price : 2
radius : 0,price : 0
radius : 2,price : 3
radius : 2,price : 3
*/

class Circle {
private:
	int radius;
	int price;
public:
	Circle(int radius = 0, int price = 0) {
		this->radius = radius;
		this->price = price;
	}
	void show() {
		cout << "radius : " << radius << ',' << "price : " << price << endl;
	}

	Circle& operator ++() {
		radius++;
		price++;
		return *this;
	}
};

int main() {
	Circle a(1, 2), b;
	a.show();
	b.show();
	b = ++a;
	a.show();
	b.show();
}

✏️ 전위 ! 연산자 중복

#include <iostream>

using namespace std;

/* 
원 a의 크기와 가격이 0이다.
원 b의 크기와 가격이 0이 아니다.
*/

class Circle {
private:
	int radius;
	int price;
public:
	Circle(int radius = 0, int price = 0) {
		this->radius = radius;
		this->price = price;
	}
	void show() {
		cout << "radius : " << radius << ',' << "price : " << price << endl;
	}

	bool operator !() {
		if (radius == 0 && price == 0) {
			return true;
		}
		else
		{
			return false;
		}
		
	}
};

int main() {
	Circle a(0, 0), b(5, 5);
	if (!a) {
		cout << "원 a의 크기와 가격이 0이다." << endl;
	}
	else {
		cout << "원 a의 크기와 가격이 0이 아니다." << endl;
	}

	if (!b) {
		cout << "원 b의 크기와 가격이 0이다." << endl;
	}
	else {
		cout << "원 b의 크기와 가격이 0이 아니다." << endl;
	}
}

✏️ 후위 ++ 연산자 중복
*전위 ++와 구분하기 위해 임의의 정수를 사용하여 함수 중복 구현

#include <iostream>

using namespace std;

/* 
radius : 3,price : 5
radius : 0,price : 0
radius : 4,price : 6
radius : 3,price : 5
*/

class Circle {
private:
	int radius;
	int price;
public:
	Circle(int radius = 0, int price = 0) {
		this->radius = radius;
		this->price = price;
	}
	void show() {
		cout << "radius : " << radius << ',' << "price : " << price << endl;
	}

	Circle operator ++(int x) {
		Circle tmp = *this;
		radius++;
		price++;
		return tmp;
	}
};

int main() {
	Circle a(3, 5), b;
	
	a.show();
	b.show();
	b = a++;
	a.show();
	b.show();
}
profile
안드로이드개발자

0개의 댓글