변수에 별명을 붙여주는 것을 참조자라 하는데, 더 쉽게 표현을 해보자면 일상생활을 할 때 사람마다
각자 친구나 주변사람들에 의해 별명으로 불리는 경우가 있습니다. 바로 이와 같다고 생각을 하면 된다.
(더 무슨 말인지 모르게 되셨나요? ㅜㅜ...)
즉, A라는 사람이 평소에 느리적느리적 행동을 한다 하여 주변사람들이
그 A라는 사람에게 ‘거북이’라는 별명을 붙여주게 되었고,
A라는 사람도 자신이 아는 사람들이 ‘거북아!’라고 불러도 대답한다는 점에서
같다고 설명을 할 수 있겠습니다. 역시 말로 설명하는 것보다 소스를 통하여 설명하여 보겠습니다.
#include <iostream>
using namespace std;
int main(void)
{
int num1 = 1;
int &num2 = num1;
//참조자의 표시는 자료형 다음에 &을 적어주어야 하며, 위와 같은 참조의 경우에는
//반드시 변수만을 참조 할 수 있다는 점과 참조자는 선언과 동시에 반드시
//변수를 이용한 초기화를 해야 한다는 점을 주의하자!!
//어? 그럼 포인터도 비슷하게 초기화 하던데 포인터 처럼 선언한 후 따로
//NULL로 초기화는 안되는가?! 라는 의문이 든다면 직접 코딩을 해보길!!!!
cout << "num1의 값 : " << num1 << ", 참조자 num2의 값 : " << num2 << endl;
//그럼 여기서 주소는 어떻게 되는가? 라고 의문을 품게 될 수도 있는데
//이럴 때 역시 확인사살을 위한 확인 코드를 작성하여 보았다.
cout << "num1의 주소 값 : " << &num1 << ", 참조자 num2의 주소 값 : "<< &num2 << endl;
//자 num1,num2의 주소와 값은 모두 같다는 것을 확인 할 수 있을 것이다.
//그이유는 참조한 num1의 메모리 공간을 별명 num2라는 것을 붙여 같이 사용하기
//때문이다. 만약에라도 이 부분에서 왜 같을까? 라고 질문한다면, 별명으로 해당하는
//사람을 불렀을 때 그 사람은 왜 날 바라 보는가? 라는 질문과 같다고 표현하고 싶다.
//참조자란 바로 값 뿐 아니라 자신이 참조하고 있는 주소까지도 참조하게 된다는
//점이다. 여기서 팁으로 참조자는 변수만을 참조할 수 있다라고 말을 했는데
//상수를 참조할 수 있다는 점을 간단하게 보여주겠다.
//바로 const키워드를 이용하면 가능하다.
const int num3 = 5;
//자 여기서 num3이라는 변수를 const를 사용하여 5라는 숫자로 상수화를 시켰다
const int &num4 = num3;
cout << "const int num3 : " << num3 << ", const int &num4 = num3 : "<< num4 << endl;
//이렇게해서도 이해가 안 된다면!
//const int &num4를 숫자를 이용하여 초기화를 하여 출력해보길!!
return 0;
}
'지식창고 > 프로그래밍' 카테고리의 다른 글
(C++)explicit 키워드란? (0) | 2019.07.05 |
---|---|
(C++)c++의 함수오버로딩이란? (0) | 2019.07.03 |
(C)namespace키워드의 사용방법과 의미 (0) | 2019.07.03 |
(C++)inline함수란 무엇인가 (0) | 2019.07.03 |
C, C++의 static키워드 (0) | 2019.07.02 |