참조자의 참조 가능성
Programming/C++ 2012. 8. 20. 01:27 |포인터와의 관련
: "C++에서, A형 포인터 변수는 A 객체 또는 A를 직접 혹은 간접적으로 상속하는 모든 객체를 가리킬 수 있다(객체의 주소 값을 저장할 수 있다)."
그런데, 이러한 특성은 참조자에도 적용이 된다.
: "C++에서, A형 참조자는 A 객체 또는 A 객체를 직접 혹은 간접적으로 상속하는 모든 객체를 참조할 수 있다."
뿐만 아니라 가상함수의 개념도 포인터와 마찬가지로 참조자에도 그대로 적용이 된다.
33행: obj는 Second를 상속하는 Third 객체이므로, Second형 참조자로 참조가 가능하다.
34~35행: 컴파일러는 참조자의 자료형을 가지고 함수의 호출 가능성을 판단하기 때문에 First 클래스에 정의된 FirstFunc 함수와 Second 클래스에 정의된 SecondFunc 함수는 호출이 가능하지만, Third 클래스에 정의된 ThirdFunc 함수는 호출이 불가능하다.
void Function(const First &ref)
만약, 이러한 문장을 보게되면 다음과 같이 판단할 수 있어야 한다.
=> First 객체 또는 First를 직접 혹은 간접적으로 상속하는 클래스의 객체가 인자의 대상이 되는구나.
=> 인자로 전달되는 객체의 실제 자료형에 상관없이 함수 내에서는 First 클래스에 정의된 함수만 호출할 수 있겠구나.
※ 상속의 목적이 명확하지 않다면, 상속은 하지 않는 편이 나을 수도 있다.
'Programming > C++' 카테고리의 다른 글
가상함수의 동작원리와 가상함수 테이블 (0) | 2012.08.22 |
---|---|
객체(Instance) 와 멤버함수(Method) 의 관계 (0) | 2012.08.22 |
가상 소멸자(Virtual Destructor) (0) | 2012.08.20 |
순수 가상함수(Pure Virtual Function)와 추상 클래스(Abstract Class) (0) | 2012.08.19 |
가상 함수 (Virtual Function) (0) | 2012.08.19 |