상세 컨텐츠

본문 제목

Const 레퍼런스 전달 방식

컴퓨터 언어/C++

by cepiloth 2020. 6. 22. 15:41

본문

728x90
반응형

 함수의 매개변수를 const 레퍼런스로 전달하는 코드를 자주 볼 수 있다. 얼핏 보면 모순되는 표현이라 생각할 수 있다. 원래 레퍼런스 매개변수를 사용하면 변수의 값을 다른 문맥에서 수정할 수 있는데, const로 지정해버리면 그렇게 할 수 없는 것처럼 보이기 때문이다.

const 래퍼런스의 가장 큰 장점은 성능이다. 함수에 매개변수를 값으로 전달하면 그 값 전체가 복제된다. 하지만 레퍼런스로 전달하면 원본에 대한 포인터만 전달되기 때문에 원본 전체를 복제할 필요가 없다. 또한 const 레퍼런스로 전달하면 복제되지도 않고 원본 변수가 변경되지도 않는 장점을 모두 취할 수 있다.

const 레퍼런스는 특히 객체를 다룰 때 유용하다. 객체는 대체로 커서 복제하는 동안 의도하지 않은 효과가 발생할 수 있기 때문이다.

다음 코드는 std::string 함수에 const 레퍼런스로 전달한는 예를 보여주고 있다.

void printString(const std::string& myString)
{
	std::cout << myString << std::endl;
}

int main()
{
	std::string s = "Hello Wrold";
	printString(s);
	printString("Hello Wrold");	// 리터럴을 전달해도 된다.
	return 0;
}


 함수에 객체를 전달할 때 값으로 전달하기보다는 const 레퍼런스로 전달하는 것이 좋다. 그러면 불 필요한 복제 작업을 피할 수 있다. 만약 전달할 객체를 함수 안에서 수정하려면 non-const 레퍼런스로 전달한다.

728x90
반응형

'컴퓨터 언어 > C++' 카테고리의 다른 글

전방 선언 Forward Declaration  (0) 2020.09.25
타입추론  (0) 2020.06.22
스마트포인터  (0) 2020.06.22
네임스페이스  (0) 2020.06.22
virtual inheritance in c++  (0) 2019.09.05

관련글 더보기

댓글 영역