2021. 10. 1. 17:04ㆍ학교수업
C++ 문자열
1. C 스트링
2. C++ string 클래스의 객체 (더 선호)
인자 전달 방식
1. 값에 의한 호출 : call by value
- 호출 코드에 값을 넘김
2. 주소에 의한 호출 : call by address
- 호출 코드에 명시적으로 주소를 넘김
- 매개 변수는 포인터 타입
함수 호출로 객체 전달 : 값에 의한 호출로 객체 전달 (생성자, 소멸자의 비대칭 실행)
- 매개 변수 객체의 생성자 호출 X => 값을 전달하는데 생성자가 호출되면 기본 생성자 호출 => 값이 달라짐
- 매개 변수 객체의 소멸자는 호출함
함수 호출로 객체 전달 : 주소에 의한 호출
- 값이 아닌 주소값을 전달
객체 치환
- 동일한 클래스 타입 객체끼리는 치환 가능
- 모든 데이터가 비트 단위로 복사
ex)
Circle c1(5);
Circle c2(30);
c1=c2; <-c2의 객체를 c1객체에 비트 단위 복사
객체 리턴
ex)
Circle get()
{
Circle temp(30);
return temp;
}
참조 변수 선언
- 참조자(&)의 도입
- 이미 존재하는 변수에 다른 이름(별명) 선언
참조에 의한 호출
- 참조를 가장 많이 쓰는 사례
- call by reference
- 함수 형식
1. 함수 매개 변수를 참조 타입으로 선언
->참조 매개 변수라 부름, 변수 이름만 생기며 공간 생성X, 실인자 변수 공간 공유
=>즉, 참조 매개 변수의 조작은 실인자 변수 조작
참조 리턴
- C언어에서는 함수는 반드시 값만 리턴
1. 기본 타입 값 ex)int, char, double, ..
2. 포인터 값
- C++에서의 함수 리턴
1. 함수 값 외 참조 리턴 가능
=>참조 리턴 : 변수 등과 같이 현존하는 공간에 대한 참조 리턴(변수 값 리턴X)
ex)
char& find()
{
return c;
}
C++의 얕은 복사, 깊은 복사
1) 얕은 복사 : shallow copy
- 객체 복사 시, 객체 멤버를 1:1로 복사
- 멤버 변수에 동적 메모리가 할당 된 경우 => 할당 받은 메모리 공유
2) 깊은 복사 : deep copy
- 객체 복사 시, 객체 멤버를 1:1로 복사
- 멤버 변수에 동적 메모리가 할당 된 경우 => 따로 메로리 할당 후, 원본 동적 메모리 내용 복사
=> 완전한 형태의 복사
복사 생성자 : copy constructor
- 객체 복사 생성시 호출되는 특별한 생성자
특징
- 한 클래스에 오직 한 개만 선언 가능
- 복사 생성자는 보통 생성자, 클래스 내 중복 선언 가능
- 모양 : 클래스에 대한 참조 매개 변수를 가지는 독특한 생성자
default 복사 생성자
- 복사 생성자 선언되어 있지 않는 클래스
'학교수업' 카테고리의 다른 글
사물인터넷의이해 5주차 (0) | 2021.10.05 |
---|---|
웹개발기초 5주차 (0) | 2021.10.01 |
가상현실프로그래밍 4주차 (0) | 2021.09.30 |
정보보호개론 4주차 (3주차 추가내용) (0) | 2021.09.30 |
임베디드기초 4주차 (0) | 2021.09.29 |