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 |