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

[C++/명품 C++ Programming]명품 C++ 3장 연습문제 - 이론 문제

by starfish22 2021. 12. 6.
728x90

1. 더 빠른 프로그래밍 속도를 내기 위해 캡슐화를 한다.

   객체의 캡슐화는 객체 외부의 접근으로부터 객체를 보호하기 위한 것이다.

 

2. 3번 클래스의 멤버들은 private 접근 지정이 바람직하다.

 

3. 아니오. 함수가 클래스로 들어와 있지 않음.

   acc 변수와 add() 함수는 어떤 클래스에도 포함되어 있지 않아 누구나 접근이 가능하다. 또한 Circle 클래스의 멤버 변수 radius가 public 속성으로 되어있어서 접근이 가능해 캡슐화를 이루고 있지 못하다.

 

4.

class Circle{
    int age,radius;
public:
    void older(){
        age++;
    }
    double getArea();
};

5.

class Circle{
    int radius;
    double getArea();
};

6.

class Tower{
    int height = 20;
public:
    Tower() { height = 10; }
};

7.

class Building{
private:
    int floor;
public:
    Building() : Building(0) {}
    Building(int s) { floor = s; }
};
int main()
{
    Building twin, star;
    Building BlueHouse(5), JanMi(14);
}

8.

class Calendar{
private:
    int year;
public:
    Calendar() : year(10) {}
    int getYear() {
        return year;
    }
};

 

9. 2번 생성자는 매개 변수 개수나 타입이 서로 다르게 선언하면 중복이 가능하다.

 

10. 소멸자는 ①객체가 소멸되는 시점에서 자동으로 호출되는 멤버 함수로서 ②클래스의 이름 앞에 ~를 붙인 이름으로 선언되어야 한다. ③매개 변수 있는 소멸자를 작성하여 소물 시에 의미 있는 값을 전달할 수 있으며, 소멸자가 선언되어 있지 않으면 ④기본 소멸자가 자동으로 생성된다.

 

11

(1)

House::House(int n, int s) : numOfRooms(n), size(s){
    cout << "numOfRooms : " << n << ", size : " << s << endl;
}

(2)

House::~House(){
    cout << "numOfRooms : " << numOfRooms << ", size : " << size << endl;
}

(3) b - c - a - a - d - d - c - b

 

12. c - b - a - a - b - c

 

13. TV() 생성자를 private 선언해서  TV LG; 를 선언하지 못한다.

class TV{
public:
    int channels;
    TV() { channels = 256; }
    TV(int a) { channels = a; }
};
int main()
{
    TV LG;
    LG.channels = 200;
    TV Samsung(100);
}

14. int channels; 변수를 private 선언해서 LG.channels를 선언할 수 없다.

class TV{
public:
    int channels;
    int colors;
    TV() { channels = 256; }
    TV(int a, int b){ channels = a; colors = b; }
};
int main()
{
    TV LG;
    LG.channels = 200;
    LG.colors = 60000;
    TV Samsung(100, 50000);
}

15. TV() , TV(int a)

 

16. 2번 프로그램의 실행 속도가 향상된다.

 

17. 1번 크기가 큰 함수는 인라인 선언할 경우 불리하다.

 

18. 1번 재귀, 반복, static은 인라인 선언이 불가하다.

 

19. 4번 클래스와 같이 상속이 가능하다.

 

20

class Family{
    char tel[11];
public:
    int count;
    char address[20];
    Family();
};

21.

struct Universe{
    Universe();
private:
    char creator[10];
    int size;
    char dataCreated[10];
};
728x90

댓글