모른다.포인터와 참조는 같은 어셈블리 명령어를 생성한다.
참조는 오직 인간을 위한 것이다.
컴파일러는 참조를 포인터로 바꿔준다.(Memory Indirection) 기계가 이해할 수 있도록
참조형의 값은 변경이 불가능하다.그리고 무조건 초기화 해야 된다.
포인터는 NULL값이 될수 있지만 참조형은 NULL값이 불가능하다. 그래서 안전하다.
#include <iostream>
using namespace std;
void swap(int &number1, int &number2)
{
// 위험한 포인터 연산이 없다.
int temp = number1;
number1 = number2;
number2 = temp;
}
int main(int argc, char const *argv[])
{
/* code */
int number1 = 3;
int number2 = 7;
int &tempNum = number2; // 무조건 초기화를 해야된다.
string name = "이동규"; // 자동으로 메모리 해제
string &nameAddress = name;
swap(number1, number2);
printf("%d\n", tempNum);
cout << number1 << number2 << nameAddress;
return 0;
}