코딩 법칙 : const ref 중요!

보물창고·2022년 8월 12일
0

c++ basic 코드누리

목록 보기
19/50
post-custom-banner

특징.

  • call by value와 const ref 인자 의
    공통점과 차이점

1) 공통점
: 외부 인자로 들어오는 원본에 영향을 주지 않음.
call by value 는 복사로 인해서 원본 영향 주지 않음.
const ref 는 const 키워드로 인해 원본 변경 차단하고, 원본을 그대로 받음.

2) 차이점.
- call by value의 경우에는, 원본에 대한 복사가 발생함.
- const ref로 인자 사용시에는, 복사가 발생하지 않음.

  • 언제 call by value를 사용? 언제 const ref를 사용?
    1) 원형 타입과 같이 메모리가 적은 데이터 -> call by value 사용
    왜?? -> 최적화가 되어 있음.
    - int나 float 형 등등.
    2) 유저 정의 타입일 경우 -> call by const ref를 사용.
    왜???-> 유저 정의 타입의 크기가 있을 경우, call by value는
    복사로 인한 오버헤드가 발생하기 때문임.
    - 구조체나 클래스
  • const ref 는 lvalue와 rvalue를 모두 받을 수 있다는 특징이 있음.
    -> 중급 내용에서 설명하심.

problem

: struct 구조체를 , 위의 내용대로 value, const ref 인자로
보내서 , 주소값을 출력 , 그리고 외부의 데이터가 변동되는지까지 확인하라.

  • call by value
    : 아직 배우지는 않았지만, 복사되는지 확인을 위해, 복사생성자도 만듦.

    -> func 호출을 통해, 복사생성자가 호출됨을 확인함. /
    데이터도 변경했지만, 전과 후의 값이 변경되지 않음도 확인함.
    --> 즉 복사가 발생함.

  • const ref 사용.

    -> 이때는 const 키워드에 의해, 인자의 값을 변경할 수 없음.


-> 메모리값이 동일함을 확인할 수 있음.

const ref 사용 의미

  • set 할 수 없다.
  • 복사 방지 .

결론

  • call by value 는 복사를 발생시킴.
  • call by const ref 는 복사를 방지함.
    그리고 원본을 사용하며, 원본의 데이터를 set 할 수 없다.
profile
🔥🔥🔥
post-custom-banner

0개의 댓글