문제 :
정수 배열을 항상 증가 순으로 유지하는 SortedArray 클래스를 작성하려고 한다.
아래의 main() 함수가 작동할 만큼만 SortedArray 클래스를 작성하고 +와 = 연산자도 작성하라.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | class SortedArray{ int size; // 현재 배열의 크기 int *p; // 정수 배열에 대한 포인터 void sort(); // 정수 배열을 오름차순으로 정렬 public: SortedArray(); // p는 NULL로 size는 0으로 초기화 SortedArray(SortedArray& src); // 복사 생성자 SortedArray(int p[], int size); // 생성자. 정수 배열과 크기를 전달받음 ~SortedArray(); // 소멸자 SortedArray operator+ (SortedArray& op2); // 현재 배열에 op2 배열 추가 SortedArray& operator= (const SortedArray& op2); // 현재 배열에 op2 배열 복사 void show(); // 배열의 원소 출력 }; |
| 1 2 3 4 5 6 7 8 9 10 11 12 | int main() { int n[] = { 2, 20, 6 }; int m[] = { 10, 7, 8, 30 }; SortedArray a(n, 3), b(m, 4), c; c = a + b; // +, = 연산자 작성 필요 // + 연산자가 SortedArray 객체를 리턴하므로 복사 생성자 필요 a.show(); b.show(); c.show(); } |
실행 결과 :

목적 및 힌트 :
연산자 중복, 복사 생성자의 종합 응용
- 연산자는 SortedArray 객체를 리턴하므로 복사 생성자가 반드시 필요하다.
a=b; 연산에서 = 연산자는 객체a의 배열 메모리를 모두 delete 시키고 객체 b의 크기만큼 다시 할당받은 후 객체 b의 배열 내용을 복사하도록 작성되어야 한다.
코드 :
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | #include |
공유하기
게시글 관리
코딩은 내일부터 ;
‘💻 개발 & CS > C++ 프로그래밍’ 카테고리의 다른 글
| 명품 C++ programming 실습 문제 8장 2번 (4) | 2020.03.09 |
| 명품 C++ programming 실습 문제 8장 1번 (1) | 2020.03.09 |
| 명품 C++ programming 실습 문제 7장 11번 (2) | 2020.03.06 |
| 명품 C++ programming 실습 문제 7장 10번 (3) | 2020.03.06 |
| 명품 C++ programming 실습 문제 7장 9번 (1) | 2020.03.06 |