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

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

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

2018년에 3월 5일에 발행된

황기태 저자의

명품 C++ Programming 개정판

3장 연습 문제입니다.

 

저작권을 준수하기 위해서

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

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

 

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

 


 

문항 정답 & 풀이
1 객체의 구성 요소들을 보호하고 볼 수 없게 하기 위해서.
2 ③ 클래스의 멤버들은 private 접근 지정이 바람직하다.
3 변수와 함수들이 상관관계가 있음에도 훑어져 있으며, 누구나 클래스 안의 멤버들에 접근이 가능하기 때문에 문제의 C++ 코드는 객체 지향 언어의 캡슐화를 달성하고 있지 않다.
4 class Person {
   int age;
public:
   void older() {
      age++;
   }
}
5 class Circle {
   int radius;
public:
   double getArea();
}

멤버 함수를 private으로 지정하면 사용이 매우 제한된다.
6 class Tower {
   int height = 20;
public:
   Tower() {
      height = 10;
   }
}

생성자에는 return문을 사용해서는 안된다.
7 class Building {
   int floor;
public:
   Building();
   Building(int s) {
      floor = s;
   }
};

클래스에 기본 생성자를 추가해줘야 한다. 또는, main 함수에서 기본 생성자를 생성하면 안된다.
8 Calendar::Calendar() {
year = 10;
}

int Calendar::getyear() {
return year;
}
9
10 ③ 소멸자는 매개변수가 있을 수 없다.
11 (1) House::House(int n, int s) {
   numOfRooms = n;
   size = s;
}
(2) House::~House() {
   cout << "방의 크기: " << size << endl;
   cout << "방의 개수: " << numOfRooms << endl;
}
(3) b 생성 -> c 생성 -> a 생성 -> a 소멸 -> d 생성 -> d 소멸 -> c 소멸 -> b 소멸
12 c 생성 -> b 생성 -> a 생성 -> a 소멸 -> b 소멸 -> c 소멸
13 기본 생성자의 접근 지정자가 private으로 돼 있어서 외부에서 접근을 할 수 없다.
class TV {
public:
   int channels;
   TV() { channels = 256; }
   TV(int a) { channels = a; }
};
14 int형 변수 channels의 접근 지정자가 private으로 돼 있는데 main함수에서 이를 직접적으로 접근했다.

class TV { 
public: 
   int channels; 
   int colors; 
   TV() { channels = 256; } 
   TV(int a, int b) { channels = a; colors = b; } 
};
15 TV()와 TV(int a)가 자동 인라인 함수이다.
16
17
18
②는 재귀함수가 포함돼서, ③은 반복문이 포함돼서, ④는 static 변수가 포함돼서 인라인 함수로 허용되지 않는다.
19 ④ C++에서 구조체도 클래스처럼 상속을 받을 수 있다.
20 class Family {
   char tel[11];
public:
   int count;
    char address[20];
   Family();
};
21 struct Univese {
   char dateCreated[10];
public:
   char creator[10];
   int size;
   Universe();
};

 

반응형