객체지향프로그래밍 5주차

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