카테고리 없음

접근 지정자

기술1 2024. 6. 15. 11:13
반응형

접근 지정자

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()등으로 추가를 해주면 사용이 가능합니다. 

 

 

반응형