본문 바로가기

CS/Cpp

Reference

 reference (레퍼런스)

참조하는 레퍼런스를 변경하면 참조 당하는 변수도 변한다.
여기서 레퍼런스와 포인터의 차이점은 ?!

포인터 : 변수
레퍼런스 : 변수가 아니다.

따라서 포인터는 어떤 대상이든 바로바로 바꾸어서 참조할 수 있지만, 레퍼런스는 자기만의 메모리를 할당받지 못하므로 참조 대상을 변경할 수 없다. 
또한 레퍼런스는 null 이 될 수 없다.


Reference ex)
#include<iostream>
using namespace std;

int main()
{
                 int var;
                 int &ref = var;
                
                var = 10;
                cout << "var`s value: " << var<<endl;
                cout << "ref`s value: " << ref<<endl;

                ref = 20;
                cout << "var`s value: " << var<<endl;
                cout << "ref`s value: " << ref<<endl;
                 return 0;
}

Swap)
레퍼런스는 swap도 가능하다. ( 여기서 포인터와 같이 주소를 추출하여 넘길 필요가 없으며, 인자로 받을 때 역시 *을 사용할 필요가 없다.)


Parameter ex)
레퍼런스는 다음과 같이 파라미터, 아규먼트로 사용 가능하다.
RCODE get_line_parameter(int x1, int y1, int x2, int y2, float & slope, float &yintercept)
if(get_line_parameter(3, 3, 6, 6, s, y) == ERROR)


const : 레퍼런스 호출 시 변수값 변경을 막기 위해선 상수 (const &ref) 를 사용하면 된다.



'CS > Cpp' 카테고리의 다른 글

Encapsulation  (0) 2013.03.12
Inline  (0) 2013.02.18
Namespace  (0) 2013.02.18
Runtime Error  (0) 2013.02.18
Redirection  (0) 2013.02.18