카테고리 없음

[C++] 클래스(class)의 접근 제어 - public, protected, private

s뽈록이s 2013. 7. 23. 11:14
class account
{
private:
	int id;

protected :
	int balance;

public :
	void deposit(int money);
	void withdraw(int money);
};

void account::deposit(int money)
{
		balance += money;
		cout << "입금 되었습니다." << endl;
}

void account::withdraw(int money)
{
	balance -= money;
	cout << "출금 되었습니다." << endl;
}

void main()
{
	account act;
	act.deposit(100);
	act.withdraw(50);
	
}

프로그램 실행화면


클래스의 장점은 encapsulation이다. 밖에서 접근을 할 수 없는 것이다. act.balance = 2000; 이런식으로 접근이 불가능하다. 그것은 private 또는 protected 안에 있어야 그렇다.


public안에 있다면 누구나, 어디서든 접근이 가능하다. C++은 되도록 변수는 private안에 선언하는 것을 권장하고 있다. 처음 배울 때에는 크게 와닿지 않았다.


나만 쓰는 프로그램이다 연습할 때에는 내 편의에 따라 public에 다 넣어 버렸기 때문이다. 우선 용어 설명을 하자면 private은 해당 클래스 내에서만 접근이 가능하다.


public은 어디서나 접근이 가능하다. protected는 어중간 한데 우선 account 클래스 내에서는 private처럼 동작한다. 이 account를 상속 받은 클래스에서는 public과 같이 동작한다.


private은 해당 클래스에서만 접근이 가능하다. 상속을 받았더라도 이 private 변수는 접근이 불가능하다. protected 를 자주 사용하면 프로그램을 수정해야할 때 많은 어려움이 있다.


만약 int balance 변수의 이름을 바꾼다고 했을 때 public이면 상속받은 클래스 전부를 수정해야 하지만 private이라면 이 변수에 접근하는 메소드(해당 함수)만을 수정하면 된다. 


그리고 클래스의 멤버함수가 짦으면 모르겠지만 길다면 클래스를 보는데 불편하다. 어떤 함수들이 있는지 한눈에 보기위해서는 클래스 안에서는 선언만 하여 주고 밖에서 그 내용을 채워 주는 것이 좋다