이번 주 배운 내용 : 객체 치환 및 객체 리턴, 참조 변수, 참조에 의한 호출, vector 실습
1. 객체 치환 및 객체 리턴
- 동일한 클래스 타입의 객체끼리 치환 가능
- 객체의 모든 데이터가 비트 단위로 복사된다.
c1 객체의 반지름이 5에서 30으로 바뀐다.
두 객체는 내용물만 다를 뿐이지 독립된 공간을 유지한다.
-객체 리턴
-객체의 복사본 리턴
객체 tmp를 리턴하는 getCircle()을 반지름이 1인 객체 c에 복사하여 c의 반지름을 30으로 치환한다.
2. 참조 변수
참조 변수 선언
- 참조자 &
- 이미 존재하는 변수에 대한 다른 이름(별명)을 선언
- 참조 변수는 이름만 생기고, 새로운 공간을 할당하지 않는다.
- 초기화로 지정된 기존 변수를 공유한다.
객체에 대한 참조
refc가 circle 객체의 별명이 된 것과 같다. ->는 포인터가 아니니까 사용할 수 없고
(참조변수이름).(클래스멤버함수) 로 쓸 수 있다.
3. 참조에 의한 호출(Call by Reference)
- 참조를 가장 많이 활용하는 사례
- 함수 형식
- 함수의 매개 변수를 참조 타입으로 선언
참조 매개 변수(reference parameter)라고 부름
- 참조 매개 변수는 실인자 변수를 참조함
- 이름만 생기고 공간이 생기지 않음
- 참조 매개 변수는 실인자 변수 공간 공유
- 참조 매개 변수에 대한 조작은 실인자 변수 조작 효과
참조 매개 변수가 필요한 사례
average() 함수는 계산에 오류가 있으면 0 리턴, 아니면 평균을 리턴하는데, 만일 average()가 리턴한 평균 자체가 0이라면, 오류일 때와 구별하기 어려워짐.
참조에 의한 호출로 Circle 객체에 참조 전달
참조 매개 변수를 가진 함수 만들기 연습
참조 매개 변수 c를 만들어주고, 객체 c에 반지름을 설정한다.
4. vector
vector 컨테이너
- 가변 길이 배열을 구현한 제네릭 클래스 : 개발자가 벡터 길이 고민할 필요 없음.
- 원소의 저장, 삭제, 검색 등 다양한 멤버 함수 지원. (파이썬의 list와 비슷하다.)
- 벡터에 저장된 원소는 0부터 시작하는 인덱스로 접근 가능.
vector 클래스의 주요 멤버와 연산자
1. push_back(element) : 벡터의 마지막에 element 추가
2. at (int index) : index 위치의 원소에 대한 참조 리턴
3. begin() : 벡터의 첫 번째 원소에 대한 참조 리턴
4. end() : 벡터의 끝(마지막 원소 다음)을 가리키는 참조 리턴
5. empty() : 벡터가 비어 있으면 true 리턴
6. erase(iterator it) : 벡터에서 it가 가리키는 원소 삭제, 삭제 후 자동으로 벡터 조절
7. insert(irerator it, element) : 벡터 내 it 위치에 element 삽입
8. size() : 벡터에 들어 있는 원소의 개수 리턴
9. operator[]() : 지정된 원소에 대한 참조 리턴
10. operator=() : 이 벡터를 다른 벡터에 치환(복사)
문자열을 저장하는 벡터
'C++' 카테고리의 다른 글
9주차 스터디 (0) | 2022.11.19 |
---|---|
8주차 스터디 (0) | 2022.11.13 |
C++ 6주차 과제 2 : 캐릭터 관리 프로그램 (0) | 2022.06.28 |
C++ 6주차 스터디 과제 1 : Template (0) | 2022.06.23 |
C++ 스터디 5주차 과제 2 (0) | 2022.05.24 |