◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!
지금까지의 예제에서 클래스를 만들 때 우리는 이유도 모르고 public 이라는 키워드를 사용했었다.
public은 '공공의'라는 뜻으로 클래스로 만들어진 객체의 정보를 누구나 사용할 수 있도록 하기 위함이었다.
그렇다면 객체의 정보를 비공개로 하기 위해서는 어떻게 해야할까??
public대신 private을 사용하면 된다.
예제를 통해 public과 private의 차리를 살펴보자.
public은 '공공의'라는 뜻으로 클래스로 만들어진 객체의 정보를 누구나 사용할 수 있도록 하기 위함이었다.
그렇다면 객체의 정보를 비공개로 하기 위해서는 어떻게 해야할까??
public대신 private을 사용하면 된다.
예제를 통해 public과 private의 차리를 살펴보자.
// private과 public의 차이를 안다. // 클래스의 크기(메모리)를 이해한다. #includeusing namespace std; class Point { private: int x; int y; public: Point(int _x, int _y); ~Point(); void position(); void move(int _x, int _y); }; Point::Point(int _x, int _y) { x=_x; y=_y; } Point::~Point() { cout << "Point die~~." << endl; } void Point::position() { cout << "(" << x << " , " << y << ")" << endl; } void Point::move(int _x, int _y) { x+=_x; //_x만큼 이동 y+=_y; //_y만큼 이동 } int main() { Point p1(3, 5); //스택에 객체 생성 Point* p3=&p1; //얕은 복사 // p1의 x, y 변수는 private이므로 그 값을 직접적으로 읽어오거나 변경할수가 없다. // 그 값을 읽어오거나 변경할 수 있는 기능을 가진 public 함수를 사용해야만 한다. p1.position(); p1.move(5,-4); //(3, 5)를(5, -4)만큼 이동 p1.position(); p3->move(4, 7); //p3으로 변경 ->p1 멤버 변경 p3->position(); p1.position(); int sizeOfPoint=sizeof(Point); cout << "Point의 크기 " << sizeOfPoint << " byte" << endl; cout << "p1의 주소 " << &p1 << endl; cout << "p3의 주소 " << &p3 << ", p3의 값(참조주소) " << p3 << endl; return 0; }