728x90
728x90
Reference(&)
Reference는 Pointers와 매우 유사하게 사용된다. 포인터보다는 강력하지는 않지만 사용하는 데는 안전하다.
Passing by Reference to Constant
-> function call 후에도 instance가 변경되지 않고 남기기 위해 사용
-> argument의 copying을 피하기 위해 사용
-> 유효한 instance의 reference가 보장하기 위해 사용
Defferences between Pointer & Reference
1. 포인터는 초기화를 하지 않아도(uninitialized) 사용할 수 있지만, reference는 초기화를 시켜주지 않으면 error가 나기 때문에 반드시 초기화를 시켜줘야 한다(initialized).
int* pa; // OK
int& rb; // error!
int b= 10;
int& rb= b; // OK
2. 포인터는 재할당을 시켜줄 수 있다. 하지만 reference는 재할당을 시켜줄 수 없다. 밑에 예시처럼 r은 a로 할당시켜주고 다음 줄에 r=b를 하여도 b에 대한 referencing 되지 않는다. 단지 b의 값을 a에 copy만 해준다.
int a =1, b= 2;
int* p;
p = &a;
p = &b;
int a = 1, b= 2;
int&r = a;
r= b; // not refencing b, just copy value of b to a
r = 100;
cout << a << " " << b << " " << r << endl;
100 2 100
3. 포인터는 null object (NULL or nullptr in C++11)를 가리키게 초기화시켜줄 수 있다. 하지만 reference는 null object로 대체할 수 없다.
int* p = NULL; //OK
int& r = NULL; // error
728x90
728x90
'Language > C++' 카테고리의 다른 글
[C++] 연결리스트 (list.h , node.h , CMakeLists.txt)-컴도리돌이 (0) | 2020.10.27 |
---|---|
[C++] Dynamic array (std::vector) - 컴도리돌이 (0) | 2020.10.26 |
[C++] Namespace - 컴도리돌이 (0) | 2020.10.17 |
[C++] 동적할당(Dynamic memory allocation) - 컴도리돌이 (0) | 2020.10.17 |
[C++] introduction to C++ - 컴도리돌이 (0) | 2020.10.15 |