[C++] 포인터와 레퍼런스 인자(Parameter)의 비교

2019. 7. 27. 20:49 기타/C++

[C++] 포인터와 레퍼런스 인자(Parameter)의 비교


함수의 결과를 얻어오기 위한 방법으로 포인터 타입과 레퍼런스 타입의 파라미터를 사용한다.


두 가지를 상황에 맞게 사용하면 되지만, 레퍼런스가 사용하기 쉽고 안전하다.


포인터 타입의 파라미터(int* a)를 사용할 때, 가장 큰 위험은 NULL 값이 넘겨져 오는 경우이다.


반드시 NULL 값은 아니더라도 올바르지 않은 주소 값이 넘어왔을 때는 심각한 문제가 발생할 수 있다.


그래서 포인터 파라미터의 경우에는 올바른 주소가 넘어왔는지 반드시 확인해야 한다.



bool checkParam(int a, int b, int* pa, int* pb){

    if (NULL == pa || NULL == pb)
        return false;


    return true;
}



포인터와 달리 레퍼런스 타입의 파라미터(int& a)의 경우에는 올바르지 않은 인자가 입력될 가능성이 없다.


만약에 올바르지 않은 파라미터를 사용할 경우에는 프로그램이 시작되기 전에 오류가 발생하기 때문에, 아예 프로그램이 실행될 수가 없다.



출처: https://hyeonstorage.tistory.com/298?category=601868 [개발이 하고 싶어요]