728x90
#include <iostream>
using namespace std;
class Power
{
int kick;
int punch;
public:
Power(int kick = 0, int punch = 0) { this->kick = kick; this->punch = punch; }
Power operator+ (Power op2);
Power& operator+=(Power op2);
Power operator + (int op2);
bool operator==(Power op2);
Power& operator++();
Power operator++(int x);
bool operator!();
void show();
};
Power Power::operator+(Power op2)
{
Power tmp;
tmp.kick = this->kick + op2.kick;
tmp.punch = this->punch + op2.punch;
return tmp;
}
bool Power::operator==(Power op2)
{
if (this->punch == op2.punch && this->kick == op2.kick)
return true;
else
return false;
}
Power& Power::operator+=(Power op2) {
kick = kick + op2.kick; // kick 더하기
punch = punch + op2.punch; // punch 더하기
return *this; // 합한 결과 리턴
}
Power Power::operator+(int op2) {
Power tmp; // 임시 객체 생성
tmp.kick = kick + op2; // kick에 op2 더하기
tmp.punch = punch + op2; // punch에 op2 더하기
return tmp; // 임시 객체 리턴
}
Power& Power::operator++() {
kick++;
punch++;
return *this; // 변경된 객체 자신(객체 a)의 참조 리턴
}
Power Power::operator++(int x) {
Power tmp = *this; // 증가 이전 객체 상태를 저장
kick++;
punch++;
return tmp; // 증가 이전 객체 상태 리턴
}
bool Power::operator!() {
if (kick == 0 && punch == 0) return true;
else return false;
}
void Power::show()
{
cout << "kick=" << kick << ',' << "punch=" << punch << endl;
}
int main()
{
cout << "2018305065 전유정" << endl;
Power a(3, 5), b(3, 5), c;
c = a + b;
cout << "a : "; a.show();
cout << "b : "; b.show();
cout << "c : "; c.show();
cout << endl;
if (a == b) cout << "두 파워가 같다" << endl;
else cout << "두 파워가 같지 않다" << endl;
cout << endl;
c = a += b;
a = c + 3;
cout << "a : "; a.show();
cout << "b : "; b.show();
cout << "c : "; c.show();
cout << endl;
b = ++a;
c = b++;
cout << "a : "; a.show();
cout << "b : "; b.show();
cout << "c : "; c.show();
}
반응형
'전공 공부 > C++' 카테고리의 다른 글
Point 클래스를 상속받는 ColorPoint 클래스 (0) | 2021.06.03 |
---|---|
전위(프렌드) 후위 연산자 중복 (0) | 2021.06.03 |
클래스 Book (복사생성자) (0) | 2021.06.02 |
디폴트 매개 변수를 이용하여 중복 함수 간소화 (0) | 2021.05.27 |
클래스 Person 깊은 복사 생성자 (0) | 2021.05.27 |