반응형
SMALL
3. 함수
- 값에 의한 호출(call by value)
- 특징
- 함수가 호출되면 매개변수가 스택에 생성
- 호출하는 코드에서 값을 넘겨줌
- 호출하는 코드에서 넘어온 값이 매개 변수에 복사됨
- 함수 안에서의 매개변수값은 함수 안에서만 복사되어 사용됨
- 특징
- 주소에 의한 호출
- 함수의 매개변수는 포인터 타입
- 호출하는 코드에서는 명시적으로 주소를 넘겨줌
- 호출하는 코드에서 넘어온 주소값이 매개변수에 저장
- *포인터를 붙여줌으로 해당 포인터의 값 자체를 변경해줄수 있음
- 값에 의한 호출로 객체 전달
- 함수를 호출하는 쪽에서 객체 전달
- 객체 이름만 사용
- 함수의 매개변수 객체 생성
- 매개변수 객체의 공간이 스택에 할당
- 호출하는 쪽의 객체가 매개 변수 객체에 그대로 복사됨
- 매개 변수 객체의 생성자는 호출되지 않
- 객체 치환
- 동일한 클래스 타입의 객체끼리 치환 가능
- 객체의 모든 데이터가 비트 단위로 복사됨
- 치환도니 두 객체는 현재 내용물만 같을 뿐 독립적인 메모리 점유를 유지함
- 함수를 호출하는 쪽에서 객체 전달
- 객체 리턴도 가능 (C# 과 동일)
- 참조의 의미
- *포인터 변수를 사용하면 위험도가 있다
- & 참조 변수는 readonly 개념으로 보통의 변수처럼 사용가능한 좀더 안전한 포인터 이다.
- 참조 리턴 get(){} (C# 프로퍼티 처럼 사용 가능)
- 얕은 복사 (Shallow copy)
- 객체 복사시 객체의 멤버를 1대 1로 복사
- 객체의 멤버 변수에 동적메모리가 할당된 경우
- 사본은 원본 객체가 할당받은 메모리를 공유하는 문제가 발생할수 있음 (같은 메모리를 참조하기 때문)
- 깊은 복사 (Deep copy)
- 객체 복사시 객체의 멤버를 1대 1로 복사
- 객체의 멤버 변수에 동적 메모리가 할당된 경우
- 사본은 원본이 가진 메모리 크기 만큼 별도로 동적 할당
- 원본의 동적 메모리에 있는 내용을 사본에 복사
- 완전한 형태의 복사 라고도 부름
- 사본과 원본은 메모리를 공유하는 문제가 발생하지 않음
4. 프렌드 연산자와 중복 그리고 상속
반응형
LIST
'C & C++ > C++ 개인 공부' 카테고리의 다른 글
[C++] 레스토랑 프로그램 제작 (0) | 2023.04.16 |
---|---|
[C++] 가위바위보 게임 (0) | 2023.04.16 |
[C++] 1일차 수업 정리 .1 (0) | 2023.03.09 |