한국방송통신대학교 컴퓨터과학과 2020학년도 2학기 C++프로그래밍 기말과제물
- 최초 등록일
- 2022.07.19
- 최종 저작일
- 2020.09
- 10페이지/
MS 워드
- 가격 4,000원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
소개글
한국방송통신대학교 컴퓨터과학과 2020학년도 2학기 C++프로그래밍 기말과제물
<과제명>
1. 복사 생성자, 이동 생성자, 대입 연산자, 이동대입 연산자에 대한 다음 과제를 작성하라. (30점)
(가) 각각의 개념을 설명하라. (A4용지 1매 내외)
(나) 교재의 [소스코드 4-8, 4-9]의 Person 클래스에 복사 생성자, 이동 생성자, 대입 연산자, 이동대입 연산자를 추가하라.
2. 가상함수의 개념 및 용법을 간단한 예와 함께 A4용지 1매 내외로 설명하라. (20점)
3. 교재의 [소스코드 7-11]을 수정하여 [소스코드 5-6, 5-7]의 Complex2 객체의 배열에 대해 rPart의 제곱과 iPart의 제곱의 합을 기준으로 내림차순 정렬 및 합병을 하려고 한다. [소스코드 7-11]을 어떻게 수정해야 하는지 설명하고, 이 방법에 따라 프로그램을 수정하라. (20점)
목차
1. 복사 생성자, 이동 생성자, 대입 연산자, 이동대입 연산자에 대한 다음 과제를 작성하라. (30점)
(가) 각각의 개념을 설명하라. (A4용지 1매 내외)
(나) 교재의 [소스코드 4-8, 4-9]의 Person 클래스에 복사 생성자, 이동 생성자, 대입 연산자, 이동대입 연산자를 추가하라.
2. 가상함수의 개념 및 용법을 간단한 예와 함께 A4용지 1매 내외로 설명하라. (20점)
3. 교재의 [소스코드 7-11]을 수정하여 [소스코드 5-6, 5-7]의 Complex2 객체의 배열에 대해 rPart의 제곱과 iPart의 제곱의 합을 기준으로 내림차순 정렬 및 합병을 하려고 한다. [소스코드 7-11]을 어떻게 수정해야 하는지 설명하고, 이 방법에 따라 프로그램을 수정하라. (20점)
본문내용
(1) 복사 생성자 Copy Constructor
동일 클래스에서 클래스의 객체를 복사하여 객체를 만드는 것을 복사 생성자라 한다. 복사 생성자를 선언하지 않으면 묵시적 복사 생성자가 생성되는데 묵시적 복사 생성자는 기본적으로 값 호출 방식으로 인수를 전달하는 포인터이므로 얕은 복사를 하게 된다. 때문에 메모리를 동적으로 할당받고 반납 하게 되어있는 클래스에서는 두 개의 객체를 선언하고 종료할 때, 반납된 메모리를 또 반납 요청하게 되어 에러가 발생한다. 이런 얕은 복사의 문제는 사용자가 직접 그 클래스의 참조형으로 복사 생성자를 명시적으로 선언하고, 메모리 공간을 별도로 할당하여 내용을 복사하게 하는 깊은 복사로 해결 가능하다.
(2) 이동 생성자 Move Constructor
r-value 참조를 사용하여 전달된 동일 클래스의 객체의 내용을 이동하여 객체를 만드는 것을 이동 생성자라 한다. 깊은 복사를 하면 데이터가 별개의 객체가 되어 안전하게 데이터를 저장 하지만 곧 소멸 될 객체까지 깊은 복사를 하는 것은 불필요한 작업을 하게 되는 것으로 비효율적이다. r-value참조를 사용하여 선언한 이동 생성자는 해당 값을 사용하고 바로 소멸 될 것이라는 가정하에 객체가 가지고 있는 공간을 이동함으로써 기억공간을 새로 할당하고, 복사하고, 기존공간을 반환하는 작업을 생략하여 비효율을 개선할 수 있다.
참고 자료
없음