다라다라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장 연습 문제 풀이 (이론 문제)

 

💡 

[정답]

(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 했을때 비정상적으로 배열이 반환되어 다른 한 객체도 반환되게 합니다.

반응형
profile

다라다라V

@DaraDaraV

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