본 글은 "황기태"님의 [명품 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장 연습 문제 풀이 (이론 문제)
💡
[정답] ④번
(222쪽) C++에서는 참조에 의한 호출(call by reference)이 추가되었습니다.
💡
[정답] ①번
💡
[정답] 주소에 의한 호출
💡
(1)
[정답] 두 함수의 선언은 같다.
(2)
[정답] 두 함수의 선언은 다르다.
💡
(1)
[정답] 5가 출력됩니다.
(2)
[정답] 25가 출력됩니다.
💡
[정답] 1 4 9가 출력됩니다.
💡
[정답] ②번
💡
[정답] ②번
💡
[정답] ①번
💡
(1)
[정답] array [] = {0, 2, 4, 6, 8, 10, 12, 14, 16, 100}
(2)
[정답] array [] = {0, 4, 6, 8, 10, 12, 14, 16, 18, 18}
(3)
[정답] array [] = {0, 2, 4, 6, 8, 10, 12, 14, 16, 18}
(4)
[정답] array [] = {0, 2, 4, 6, 0, 10, 12, 14, 16, 18}
💡
[정답]
copy() 함수는 "값에 의한 호출" 이므로 매개 변수가 실인수 a, b 에게 영향을 줄 수 없습니다. copy()의 호출문을 그대로 두고 "참조에 의한 호출"이 되도록 코드를 변경하면 됩니다.
void copy(int& dest, int src) {
dest = src;
}
💡
[정답]
big1() 함수에서 매개변수 a, b는 실인수 x, y와 다른 별도의 공간에 메모리를 할당 받습니다. 때문에 큰 값을 저장하는 b에 대한 참조값은 big1() 함수가 소멸되며 함께 소멸됩니다. 따라서 x=1, y=2, z=100이 되게 됩니다.
big2() 함수의 경우 a, b 모두 참조 매개 변수이기 때문에 실인수 x, y의 주소를 가져 값을 변경할 수 있습니다. 큰 값 b의 참조를 리턴하면 w는 y에 대한 참조가 되고 w=y=100이 됩니다. 따라서 x=1, y=100, w=100이 되게 됩니다.
💡
[정답]
기본 생성자 : MyClass();
복사 생성자 : MyClass(MyClass&);
💡
[정답] ②번
💡
(1)
[정답]
MyClass::~MyClass() { delete element; }
(2)
[정답] 디폴트 복사 생성자는 모든 멤버를 1:1로 복사하도록 작성됩니다.
MyClass::MyClass(MyClass mc) {
size = mc.size;
element = mc.element
}
💡
[정답] ①번
💡
[정답]
Student::Student(Student& s) {
name = s.name;
id = s.name;
grade = s.grade;
}
💡
[정답]
Student::Student(Student& s) {
pName = s.pName;
pId = s.pId;
grade = s.grade;
}
💡
[정답]
a = b; 문장은 각 멤버를 복사하기 때문에 할당된 메모리를 공유합니다. 그러므로 a의 값을 변화하면 b도 변화하고, b의 값을 변경하면 a의 값도 변경됩니다. 또한 두 객체 중 한 객체만 delete 했을때 비정상적으로 배열이 반환되어 다른 한 객체도 반환되게 합니다.
'대학교 > 명품 C++programming 문제' 카테고리의 다른 글
[C++] 명품 C++ Programming 7장 연습 문제 풀이 (이론 문제) (0) | 2022.11.22 |
---|---|
[C++] 명품 C++ Programming 6장 연습 문제 풀이 (이론 문제) (0) | 2022.11.19 |
[C++] 명품 C++ Programming 4장 연습 문제 풀이 (실습 문제) (0) | 2022.11.11 |
[C++] 명품 C++ Programming 4장 연습 문제 풀이 (이론 문제) (0) | 2022.11.10 |
[C++] 명품 C++ Programming 3장 연습 문제 풀이 (이론 문제) (0) | 2022.10.29 |