c++
명품 c++ 7장 연습문제 8번, 9번
케굴
2020. 5. 5. 09:21
8번
프랜즈 함수를 이용해서 작성
#include <iostream>
using namespace std;
class Circle {
int radius;
public:
Circle(int radius =0) { this->radius = radius; }
void show() { cout << "radius " << radius << " 인 원"<<endl; }
friend Circle operator++(Circle & a);
friend Circle operator ++ (Circle & a,int x);
};
Circle operator++(Circle & a) {
a.radius++;
return a;
}
Circle operator++(Circle &a ,int x) {
Circle tmp;
tmp = a;
a.radius++;
return tmp;
}
int main() {
Circle a(5), b(4);
++a;
b = a++;
a.show();
b.show();
}
객체의 함수로 작성
#include <iostream>
using namespace std;
class Circle {
int radius;
public:
Circle(int radius =0) { this->radius = radius; }
void show() { cout << "radius " << radius << " 인 원"<<endl; }
Circle &operator++();
Circle operator ++ (int x);
};
Circle& Circle::operator++() {
++radius;
return *this;
}
Circle Circle::operator++(int x) {
Circle tmp;
tmp = *this;
radius++;
return tmp;
}
int main() {
Circle a(5), b(4);
++a;
b = a++;
a.show();
b.show();
}
9번
#include <iostream>
using namespace std;
class Circle{
int radius;
public:
Circle(int radius = 0) { this->radius = radius; }
void show() { cout << "radius " << radius << " 인 원" << endl; }
friend Circle operator +(int x, Circle a);
};
Circle operator +(int x, Circle a) {
Circle tmp;
tmp.radius = a.radius + x;
return tmp;
}
int main() {
Circle a(5), b(4);
b = 1 + a;
a.show();
b.show();
}