본문 바로가기

강의자료/Class

TIP. 같은 클래스의 인스턴스끼리는 private멤버도 직접 접근이 가능하다.

◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!


음..전혀 생각지도 못한 코드가 실행이 되는군요.
바로 private과 같은 접근 권한은 인스턴스 단위가 아니라 클래스 단위라는 겁니다.
다시말해, 아무리 private으로 해봤자 같은 클래스의 인스턴스에서는 마음대로 접근할 수 있다는 거죠.
예를 들면, 내(남자)가 여자친구(private)에 대해서 누구에게도 알려주지 않아도 다른 녀석(남자)들은 내 여자친구가 누구인지 알 수 있다는 겁니다.

아래코드는 재미삼아 작성한 코드입니다. 실행은 아주 잘 되구요 -_-;;
#include 
#include 
using namespace std;

class 남자
{
private:
	string 여자친구;

public:
	남자(string name)
	{
		여자친구 = name;
	}

	void 여자친구뺏기(남자 &딴남자)
	{
		this->여자친구 = 딴남자.여자친구;
		딴남자.여자친구 = "없음";
	}

	void 내여자()
	{
		cout << 여자친구 << endl;
	}
};

void main()
{
	남자 남자1("없음");
	남자 남자2("전지현");

	남자1.여자친구뺏기(남자2);

	남자1.내여자();
	남자2.내여자();
}