This 포인터란? |
결과를 보면 알 수 있듯이, This 포인터는 멤버 함수를 소유한 객체를 가리키고 있다. 다시 말해서 멤버 함수를 호출할 때 사용한 객체를 가리키고 있다. 그럼 이런 this pointer의 타입은 어떻게 되는것일까? 일단 객체를 가리키는 것이므로 Person 클래스의 포인터 타입이 여기서 this의 리턴 타입이라고 할 수 있다. (Person * 타입)
Friend |
위 두 예제를 보면 쓰는 용법에 대해서는 간단히 한눈에 알아 볼 수 있다. friend는 함수, 클래스에 적용해서 쓸 수 있다. friend가 가지는 특징을 살펴 보면 아래 4가지 정도로 요약 할 수 있다.
1. 클래스에 friend 키워드와 함께 원형을 명시 해야 한다.
2. 상속 되지 않는다.
3. friend 함수는 클래스의 멤버가 아니라 일반함수이다. (멤버 접근 연산자로 접근하지 않는다.)
4. 보통 사용되는 곳은 연산자 중복 사용시, 하나의 함수에서 다른 클래스들의 비공개 멤버로 접근시 사용된다. (전방참조)
※ 전방참조(Forward Reference) : 두개 이상의 클래스를 동시에 선언하는 것은 논리적으로 불가능하므로 컴파일러에게 미리 이 클래스가 있음을 알려주는 것
보통 friend가 OOP(Object Oriented Programming)의 캡슐화와 정보은닉을 해친다는 이야기가 있지만, 대다수의 경우 friend는 멤버의 개수를 줄여줌으로서 캡슐화에 더 이로운 영향을 끼친다. (public 멤버가 적을수록 캡슐화가 좋아진다) friend를 피하기 위해 인위적으로 public 멤버를 추가한다면 그것이 오히여 OOP에 악역향을 끼친다.
'Programming > C / C++' 카테고리의 다른 글
[C++] 클래스와 static (0) | 2010.09.12 |
---|---|
[C++] 클래스에서의 멤버 변수, 멤버 함수의 상수화 (const의 사용법) (2) | 2010.09.12 |
[C++] 생성자와 소멸자 (Constructor & Destructor) - 두번째 (0) | 2010.09.09 |
[C++] 생성자와 소멸자 (Constructor & Destructor) - 첫번째 (0) | 2010.09.09 |
[C++] 정보은닉과 캡슐화 (Information Hiding & Encapsulation) (0) | 2010.09.09 |