[명품 C++ Programming] chapter 5 : 함수와 참조, 복사 생성자(2) - 참조

eunee22·2023년 8월 20일

명품 C++ Programming

목록 보기
20/34

제가 대학교 1학년 때 [명품 C++ Programming] 교재로 진행되는 C++ 수업에서 배운 내용을 교재와 ppt를 중심으로 정리한 내용입니다.
(2022.9 ~ 2022.12)
당시에 공부를 위해서 HWP 파일로 정리해 놓은 것을 그대로 올립니다.

🍑참조와 함수

참조 개념

  • 참조 : 가리키는것

참조 변수

  • 참조변수 : 이미 선언된 변수에 대한 별명

  • 참조변수의 선언 → 참조자&를 이용
    데이터형 &원본변수 = 참조변수; 형식으로 선언
    클래스명 &원본변수 = 클래스명; 형식으로 선언
    ▶ 선언시 반드시 원본변수로 초기화

  • 참조변수는 이름만 생기고 새로운 메모리 공간이 할당되지 않음
    → 초기화로 지정된 기존 변수를 공유

  • 참조변수는 보통변수와 동일하게 사용

  • 참조변수는 포인터가 아니므로 포인터처럼 사용하는 것을 주의
    → 참조 변수에 대한 포인터를 만들 수 있음


참조변수 선언 시 주의사항

  1. 초기화가 없으면 컴파일 오류
  2. 참조자& 의 위치는 상관없음
    데이터형& 원본변수, 데이터형 &원본변수, 데이터형 & 원본변수 셋다 가능
  3. 참조자의 위치가 데이터형과 원본변수 사이가 아니라면 문법적으로 잘못되어 컴파일 오류가 발생
  4. 참조변수의 배열을 만들 수 없음.
  5. 참조변수에 대한 참조 선언 가능

참조에 의한 호출, call by reference

  • 함수의 매개변수를 참조 타입으로 선언(참조매개변수)하여, 매개변수가 함수를 호출 하는 쪽의 실인자를 참조하여 실인자와 공간을 공유하도록 하는 인자 전달 방식

  • 참조를 가장 많이 사용하는 사례

  • 참조 매개 변수에 대한 조작은 실인자 변수를 조작하는것과 같은 효과를 가짐

  • 리턴해야 하는 정보가 2개 이상인 경우 참조에 의한 호출이 필요함

  • 참조 매개 변수로 이루어진 모든 연산은 원본 객체에 대한 연산

  • 참조 매개 변수는 이름만 생성되므로 생성자와 소멸자는 아예 실행되지 않음


  • 장점
    • 간단히 변수를 넘겨주기만 하면됨
    • 함수내에서 보통 변수처럼 사용하기에 작성하기 쉽고 보기 좋은 코드

참조 리턴

  • C 언어에서 함수는 반드시 값만 리턴
    ▶ 기본타입값 → 정해진 리턴 타입값
    ▶ 포인터값 → 메모리 주소

  • C++에서는 C언어에서 지원하는 값 + 참조 리턴 가능

  • 참조 리턴 : 변수 등과 같이 현존하는 공간(메모리)에 대한 참조 리턴
    ▶ 변수의 값을 리턴하는 것이 아님

  • 데이터타입& 함수이름(); 형식으로 선언

  • 참조 리턴에 대한 치환문
    ▶ 참조 함수 리턴값에 대해서 또 참조 변수를 지정할수 있음
    ▶ 참조 함수가 치환문의 오른쪽에 온다면 참조함수의 리턴값이 왼쪽의 값으로 치환됨

profile
보안 공부하는 대학교 4학년 / 시리즈에서 더욱 편하게 글을 찾아보실 수 있습니다:)

0개의 댓글