- 함수 중에서 언제 참조리턴을 하고있을까?
: vector에서 값 set할때
-> 사실 v.operator = 4; 가 호출되고 있는 것임.
--> 참조 형식으로 되어있다는 것을 유추할 수 있음.
: 원형타입도 그대로 적용됨.
int x, foo x값리턴 ,goo x참조리턴 함수를 만들어서
main에서 foo, goo 함수에 접근해서 x의 값을 변경후 출력하라.
value 캐스팅은 임시객체를 생성함.
참조 캐스팅은 원본 임.
: 아래의 예시코드의 결과를 보자.
: value 캐스팅은 가능하지만, .data 에다가 4를 대입하려고 하는 부분에서 에러가 발생한다.
즉 value 캐스팅은 임시객체 라는 것을 알 수 있다.
- 책을 보거나, 선배들이 하는 말 : 후위 객체 말고, 전위 증감 연산자를
사용하라고 함. 그 이유가 무엇일까?? 에 대해 알아보자.
++n = 4?
n++ = 4?
-> 결과가 어떻게 될지 예상해야 함.
++n = 4만 가능하다.
결과는 4가 나온다! 왜냐하면 ++n 처리 이후에 바로 값을 넣는 거다.
n++; 은 불가함을 확인할 수 있따.
: 클래스 object에 전위형과 후위형 증가연산자를 만들어서 내부 데이터
data를 증가시켜라 .
- 전위형은 참조 리턴임.
- 후위형은 값 리턴임.
: 많이 활용하지는 않지만, 알아두자.
: 함수 선언 뒤에 & ,&& 의 의미 (c++11에서 추가되었다고 함.)
void func() & : lvalue 객체에서만 호출이 가능함.
void func() && : rvalue 객체에서만 호출이 가능함.
problem : 확인하라.
: 아래의 코드를 보면, 참조 변수가 파괴되는 객체의 멤버 데이터를 받고 있는데,
복사를 통해 이를 가능케 하고 있음...
https://velog.io/@kwt0124/%EC%B0%B8%EC%A1%B0-%ED%95%9C%EC%A0%95-%EB%A9%94%EC%84%9C%EB%93%9C