다라다라V
article thumbnail
728x90
반응형
본 글은 "황기태"님의 [명품 C++ Programming]의 연습 문제 답을 공유하고자 작성되었으며, 필자가 직접 문제를 풀며 작성한 것이기에 오류가 있을 수 있습니다. 댓글로 알려주시면 반영하도록 하겠습니다.

시리즈 보기
[C++] 명품 C++ Programming 1장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 1장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 2장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 2장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 3장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 4장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 4장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 5장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 6장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 7장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 8장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 8장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 9장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 9장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 10장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 10장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 11장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 11장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 12장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 12장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 13장 연습 문제 풀이 (이론 문제)

 

1. 💡 

[정답]

 

2. 💡 

[정답]

 

3. 💡 

[정답] 

<cpp />
class Sample { friend SampleManager; }

 

4. 💡 

[정답] 

<cpp />
class Sample { friend bool SampleManager::compare(Sample &a, Sample &b); }

 

5. 💡 

[정답] 

<cpp />
bool insValid(Student s) { if(s.id > 0) return true; // 오류 발생 else return flase; }

isValid() 함수에서 Student의 private 멤버에 접근하기 때문에 부적절한 접근이 되어 오류가 발생합니다. 적절한 접근이 되기 위해서는 isValid() 함수를 friend 함수로 작성해야합니다.

<cpp />
class Student { int id; public: Student(int id) { this->id = id; } friend bool isValid(Student s); // 프렌드 선언 }

 

6. 💡

[정답]

<cpp />
void show(Student s, Professor p) { cout << s.id << p.name; }

show() 함수에서 Student와 Professor의 private 멤버에 접근하므로 컴파일 오류가 발생합니다. 적절한 접근이 되기 위해서는 show() 함수를 friend 함수로 작성해야합니다.

<cpp />
Class Student { int id; public: Student(int id) { this->id = id; } friend void show(Student s, Professor p); } Class Professor { int name; public: Professor(string name) { this->name = name; } friend void show(Student s, Professor p); } void show(Student s, Professor p) { cout << s.id << p.name; }

 

7. 💡 

[정답]

shopping() 함수 내에서 Food 클래스의 private 멤버인 price에 접근하여 컴파일 오류가 발생합니다. 마찬가지로 friend 함수로 선언해야합니다.

<cpp />
class Food { int price; string name; public: Food(string name, int price); void buy(); friend void Person::shopping(Food food); // friend }; class Person { itn id; public: void shopping(Food food); int get() {return id;} }; void Person::shopping(Food food) { if (food.price < 1000) food.buy(); }

 

8. 💡 

[정답]

 

9. 💡

[정답]

 

10. 💡

[정답]

friend 함수 선언이 필요하지 않습니다. isZero는 Sample 클래스의 public 멤버인 x에 접근합니다. private 멤버에 접근하는 것이 아니므로 friend 함수로 선언할 필요는 없습니다.

 

11. 💡 

[정답] 연산자 중복

 

12. 💡

[정답]

치킨 + 양념 = 양념치킨

 

13. 💡 

[정답]

 

14. 💡 

[정답]

 

15. 💡 

[정답]

 

16. 💡 

[정답]

 

17. 💡 

[정답]

치환 연산자를 작성할 필요가 없습니다. Circle 클래스의 경우 포인터를 가진 멤버가 없어 두 객체가 비트 단위로 복사되는 객체 기본 치환 연산을 해도 문제가 발생하지 않습니다.

 

반응형
profile

다라다라V

@DaraDaraV

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!