일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 사진에서 글자추출
- 파이썬
- 영통외식
- 양양솔비치 뷔페
- 홍시스무디
- 검색완료
- 결항전문
- 사진문자추출
- 사진문자추출하기
- 커피쏟음
- 양양솔비치아침
- 오트눈썰매장
- 중학교입학수학문제
- 편도수술
- 커피
- 아이혼자다녀옴
- 종이캐리어
- 에어아시아
- DFS
- 양양솔비치세프스키친
- 영통역소고기
- 양양솔비치조식
- 주차넉넉
- 가족소고기외식
- 당근마켓중고차
- 영통칠프로칠백식당
- 결항
- 고마워다음
- 싱가폴중학교수학문제
- 푸르지오포레피스
- Today
- Total
너와나의 관심사
Call by reference 에서 참조의 의미 본문
reference 기억공간에 붙여진 이름에 다른 이름( alise) 을 붙이는것
즉 기억공간은 하나인데 그 기억공간을 부르는 또 다른 이름을 붙이는것을 말함
'&'참조 연산자 를 사용
형식: 자료형 & 참조변수명 = 기존변수명
Man *pp = p;
Man *&pp = p;
이 둘의 차이는 p값이 new 로 다른 pointer를 가르켜도 아래와 같이 변경이 된다.
Man *&pp = p;
pp값은 p = new Man ;
이렇게 할당이 다시 일어나도 pp 값은 따라서 변경하게 된다.
예
int n = 10;
int & k = n ;
단항 연산자인 번지 연산자(&) 와 구별하는 방법은
& 연산자 좌측에 자료형이 오면 참조 연산자로 사용된것 이라 판단
Reference 를 함수의 인자 전달에 적용한것을 Call by reference 라 한다.
함수의 return 값이 reference 형인 경우도 있는데
이경우에는 값을 되돌리기 위해 임시 기억공간을 만들지 않고 되돌리려는
변수의 기억공간 자체가 return 이 된다.
참조형 return
int & sub(void);
int & temp = sub();
sub = 500;
저 함수 sub 에 imsi 로 변수에 값을 입력하는데 그 값은 같은 주소를 가르키는
참조형 변수라 결국 temp 변수와 같은 주소를 가르키며 같은 값을 가지고
sub 에 500값을 입력을 하게 되면 temp값도 같이 변경이 된다.
함수 중에 이렇게 구현이 되면 생성자가 두번 불리는게 아니라 저 temp가 불리게 된다
물론 warning 은 날수 있는데 value 를 return 하는 경우와 차이점인 class 를 하나 만들고 다시 생성자를 만든 과정이 없으며
메모리가 절약되고 생성자와 소멸자가 불리지 않는다.
func.output();
Man & func(void)
{
Man temp;
temp.output();
return temp;
}
}