본문 바로가기
문제풀이/명품 C++ Programming

[명품 C++ Programming] 4장 연습 문제

by 민됴리 2020. 12. 15.
반응형

 

2018년에 3월 5일에 발행된

황기태 저자의

명품 C++ Programming 개정판

4장 연습 문제/ 실습 문제입니다.

 

저작권을 준수하기 위해서

책에 나와있는 문제는 적지 않고

문항 번호, 정답, 풀이만 적었습니다.

 

궁금한 점은 댓글로 남겨주세요.

 


 

문항 정답 & 풀이
1 (1) Rect *p;
(2) p = &r;
(3) cout << "폭: " << p->getWidth() << ", 높이: " << p->getHeight();
2 (1) q = new Rect(w, h);
(2) cout << q->getArea();
(3) delete[] q;
3 ① a는 인자가 없기 때문에 기본 생성자를 호출하는데 주어진 Rect 클래스에는 기본 생성자가 존재하지 않음
4 Rect 클래스에 기본 생성자를 추가해준다.
5 int totalArea = 0;
for (int i = 0; i < 5; i++) {
   totalArea += r[i].getArea();
}
cout << "배열 r의 사각형 면적의 합은 " << totalArea << "입니다.";
6 ④ c는 포인터가 아니기 때문에 화살표 연산자를 사용하지 못함.
7 ④ delete[] c; 코드로 배열 c를 소멸한다.
8 기본생성자
기본생성자
기본생성자
소멸자
소멸자
소멸자
9
10 객체 배열을 동적 생성했는데 반환할 때는 일반 객체를 배열하듯이 함.
11 ③ 정적 멤버 함수는 객체가 생성되기 전부터 존재할 수 있기 때문에 this를 사용할 수 없다.
12 ③ this는 생성자에서 사용할 수 있다.
13 class Location {
   int width, height;
public:
   Location() { this->width = this->height = 0; }
   Location(int width, int height) {
      this->width = width; this->height = height;
   }
   void show();
};
void Location::show() {
   cout << this->width << this->height << endl;
}
14 메모리 누수는 동적으로 할당받은 메모리의 주소를 잃어버려 힙에 반환할 수 없게 될 때 발생한다.
15 (1) 메모리 누수가 발생한다
블럭의 맨 끝에 delete[]p;를 추가해준다.
(2) 메모리 누수가 발생하지 않는다.
(3) 메모리 누수가 발생하지 않는다.
(4) 메모리 누수가 발생한다.
void f() { 
   int* p; 
   for (int i = 0; i < 5; i++) { 
      p = new int; 
      cin >> *p; 
      if (*p % 2 == 1) { 
         delete p; 
         break; 
      } 
      delete p; 
   } 
}
16
17 stoi
18 ③ string 클래스는 C++의 표준이다.
19 string a("My name is Jane");
char ch = a[2];
if (a == "My name is Jhon") cout << "same";
a += "~~";
a[1] = "Y";

 

반응형