C++ 자료구조론(이석호)

[C++ Fundamentals of Data Structures/C++ 자료구조론(이석호)] 2.2 추상 데이타 타입으로서의 배열 연습문제

ShuYan 2023. 9. 6. 01:39

1. 다음 내용을 제외하고 1차원 C++ 배열 (즉 인덱스 집합은 0에서 시작하는 연속적인 정수의 집합이다)과 동일한 class CppArray를 구현하라.

 

(i) 영역 검사를 수행한다.

(ii) 치환 연산자를 이용하여 한 배열을 다른 배열에 치환하는 것이 가능하다. (ex: cp1 = cp2)

(iii) 배열의 크기를 반환하는 함수를 제공한다.

(iv) coutcin을 사용하여 배열의 입력과 출력이 가능하다.

 

이 구현을 위해 CppArray에 대해 다음과 같은 멤버 함수를 정의해야만 할 것이다.

(a) 생성자 CppArray (int size = defaultSize, float initvalue = defaultValue). 이 생성자는 크기가 size이고 원소들이 모두 initvalue로 초기화된 배열을 생성한다.

(b) 복사 생성자 CppArray (const CppArray &cp2). 이 함수는 배열 cp2와 동일한 배열을 생성한다. 복사 생성자는 다음과 같이 다른 클래스 객체를 이용하여 한 클래스 객체를 초기화 하는데 사용한다.

CppArray a = b;

(c) 치환 연산자 CppArray& operator = (const CppArray& cp2). 이 함수는 원래의 배열을 cp2로 대체한다.

(d) 파괴자 ~CppArray().

(e) 첨자 연산자 float& operator[] (int i). 이 함수는 범위 검사를 할 수 있도록 구현되어야 한다. 

(f) 멤버 함수 int GetSize(). 이 함수는 배열의 크기를 반환한다.

(g) CppArray의 원소들을 입력하고 출력하기 위해 연산자 <<와 >>를 다중화한 함수를 구현한다. 이 함수들은 CppArrayfriend 함수로 정의되어야 한다.

 

 

- main.cpp 소스화일

 

 

 

- CppArray.h 헤더 화일

 

 

*CppArray.cpp 함수용 소스 화일 만들 수 있으나 이번엔 class 선언한 헤더 화일에 함께 함수까지 생성함!

* 참고 : https://jaimemin.tistory.com/136

 

* 이해는 됐으나 내 힘으로 풀지 않은 것이 아쉬움 ㅠ ㅠ 

* 2회독 때는 내 힘으로 풀기 도전 ~.~