본문 바로가기

참조자2

C++ 독학 4일차 - 레퍼런스 후반부, new와 delete 어제 너무 놀아서.. 공부를 거의 못했기 때문에 이어서 작성해볼게요 주석으로 달아두면 더 보기 편할 것 같아서 포스팅 방식을 바꿔봤어요 레퍼런스를 리턴하는 함수 오류가 생기고 런타임 오류가 발생합니다. 문제점은 주석에도 있다시피 function의 리턴타입은 int&인데 리턴하는 function안에 정의되어있는 a는 리턴과 함께 사라진다. 원래 참조하고 있던 변수가 이미 사라져 오류가 발생하게 된다. 이것이 dangling reference. 레퍼런스를 리턴하는 함수에서는 지역변수의 레퍼런스를 리턴하지 않도록 조심해야 한다.(사라지니까) 외부변수의 레퍼런스를 리턴하는 것은 다음과 같이 가능하다. 이렇게 참조자를 리턴하는 경우에는 레퍼런스가 참조하는 타입의 크기와 상관없이 주소값 복사로 전달이 끝나기 때문에.. 2021. 7. 22.
C++ 독학 3일차 레퍼런스 도입 이제부터 C++을 시작하는 기분이 든다. 새로운 개념인 참조자에 대해서 공부해볼 거니까! 참조자 하면 &가 생각나곤 하는데, 내가 생각하는게 아니겠지? 무시하고 넘어가봅시다. 위와 같이 코드를 입력하면 차례대로 5와 3이 출력된다. 이전에 했던 것들이기도 하고 c언어에서도 볼 수 있었던 코드라 어렵지 않다. change_val함수의 인자 p에다가 number의 주소값을 전달해서 *p를 통해 number을 참조하여 number값을 바꿨다. c언어에서 어떤 변수를 가리키고 싶다면 포인터를 이용했다. c++에서는 다른 변수나 상수를 가리키는 방법으로 이 방법 말고도 다른 방식을 제공한다. 그것이 바로 참조자, 레퍼런스이다. 이것이 바로 레퍼런스를 이용한 코드이다. 한줄씩 분석하며 공부해보자. 5 | int a.. 2021. 7. 20.