Programming Lang/C++
C++ Chapter 04-4 추가 내용
시데브
2023. 7. 24. 18:01
문제
Self-Reference의 반환 파트에서 다음 코드를 보고 의문점이 생겼다.
SelfRef& ShowTwoNumber() // 객체 자신의 참조의 정보(참조값)을 반환
{
cout<<num<<endl;
return *this; // 객체 자신의 값
}
반환형은 참조형인데 반환값은 참조자가 아닌 *(포인터) 형태이다. 그렇다면 *(pointer)의 자료형은 참조형인 것일까? 아니면 this 포인터의 경우에만 위 상황이 성립이 되는 것인가?
문제 풀이
우선 this 포인터의 경우에는 해당 상황이 성립하는 것을 확인했기 때문에, 일반적인 포인터의 경우에서도 성립함을 보이면 *(pointer)의 자료형은 참조형임을 단편적으로 증명할 수 있다.
#include <iostream>
using namespace std;
int& RefReturn(int * ptr)
{
return *ptr;
}
int main(void)
{
int num1 = 1;
int * ptr1 = &num1;
int & ref = RefReturn(ptr1);
cout<<ref<<endl;
++(*ptr1);
++(ref);
cout<<ref<<", "<<*ptr1<<endl;
return 0;
}
1
3, 3
위 예제를 통해서 &ref = *pointer 선언이 가능한 것과 둘 다 같은 주소에 접근하는 것을 확인함.
결론
*pointer는 참조형으로 취급한다.
728x90
반응형