반응형
접근 지정자
class MyRectangle {
private:
MyPoint lu;
int width, height;
public:
int area() {
return width * height;
}
};
접근 지정자가 나오면 다른 정의자가 나오기 전까지 그 접근지정자의 멤버가 됩니다. private 멤버는 클래스 내부에서만 접근이 가능한 것입니다. 다르게 말하면 이 클래스 외부에서는 접근할 수 없는 멤버입니다.
만약 클래스 외부에서
MyRectangle r(1,2,3,5);
cout < < r.width
이런 식으로 사용할 수 없습니다.
private
private 멤버들은 클래스 외부에서 볼 수 없습니다. 클래스 외부에서는 오로지 public 멤버들만을 엑세스할 수 있습니다. 따라서 public 멤버들의 의미/기능이 달라지짖 않는다면 자유롭게 private 멤버들을 수정할 수 있습니다.
예시
사각형의 왼쪽-위쪽 꼭지점의 좌표와 너비, 높이를 표현하였습니다. 사각형을 표현하는 방법은 다양합니다. 왼쪽-왼쪽 꼭지점의 좌표와 오른쪽-아래쪽 꼭지점의 좌표로 표현할 수도 있고, 혹은 중점의 좌표와 너비, 높이로 표현할 수도 있습니다.
#include <iostream>
using namespace std;
class MyRectangle {
private:
MyPoint lu, rl;
int width, height;
public:
MyRectangle(My point p, double w, double h) :
lu(p), width(w), height(h) {}
MyRectangle(MyPoint p) {
return p.x >= lu.x && p.x <= lu.x + height && p.y >= lu.y
&& p.y <= lu.y + width;
}
double area() {
return width * height;
}
double dist_center2origin() {
MyPoint center(lu.x + height / 2.0, lu.y + width / 2.0);
return center.dist2origin();
}
};
#include <iostream>
using namespace std;
class MyRectangle {
private:
MyPoint lu, rl;
int width, height;
public:
MyRectangle(My point p, double w, double h) :
lu(p), rl(p.x+h, p.y+w) {}
MyRectangle(double x, double y, double w, double h) :
lu(x, y), rl(x + h, y + w) {}
bool contains(MyPoint p) {
return p.x >= lu.x && p.x <= rl.x && p.y >= lu.y
&& p.y <= rl.y;
}
double area() {
return (rl.x - lu.x) * (rl.y - lu.y);
}
double dist_center2origin() {
MyPoint center((lu.x + rl.x) / 2.0, (lu.y + rl.y) / 2.0);
return center.dist2origin();
}
};
x, y를 private 멤버로 변경할 경우 get_x(), get_y()등으로 추가를 해주면 사용이 가능합니다.
반응형