Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

SYDev

C++ Chapter 04-4 추가 내용 본문

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는 참조형으로 취급한다.