C++ const reference 변수와 그냥 변수의 차이점

조회수 6464회

예를 들어 Point라는 클래스가 있으면,

const Point Point::operator+(const Point& a) 와 const Point Point::operator+(Point a) 는 무슨 차이가 잇나요?

const Point&가 call by value 가 아니라 call by reference로 하기 때문에 속도가 더 빠르다는 것만 알고있는데 좀 자세히 설명해주실수 있는분 계신가요ㅠㅠ

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 1. const는 상수화라는 의미입니다.

    위의 경우 const Point& a 라고 지정하면, a의 레퍼런스 대상을 변경할 수 없게 한다라는 뜻이 됩니다.

    2. call by value vs. call by reference

    • call by value 방식의 값 전달은 값을 복사해서 전달합니다.
      • 주의: 클래스 오브젝트의 call by value 전달을 위해서는 필히 복사생성자(Copy Constructor)를 구현해야만 합니다.
      • 인자 전달 후, 원본 값과 전혀 별개의 개체임으로 함수안에서 값을 변경해도, 원본 인자에 영향을 주지 않습니다.
    • call by reference 방식의 값 전달은 원본의 값의 그대로 사용하며, 참조만 전달합니다. (C에서는 포인터로 이를 흉내내었으나, C++에서는 별도로 제공합니다.)
      • 원본을 전달하기 때문에, 함수안에서 개체에 조작을 행한경우, 함수 종료후에도 그 영향이 남아있게 됩니다.
    • 위 설명에서 본 것과 같이 값을 복사하는 행위가 없기 때문에 call by referncecall by value보다 빠릅니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)