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

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

by starfish22 2022. 2. 4.
728x90

1. 2번

 

2. 1번

 

3. 3번 protected는 상속받은 클래스만 사용이 가능하다.

 

4. 4번 D클래스가 A클래스를 직접적으로 상속받지 않았기 때문이다.

 

5. 2번 A클래스에서 변수 x는 private멤버이다.

 

6.

1번 A클래스에서 변수 x는 private멤버이다.

2번 B클래스에서 변수 y는 private멤버이다.

4번 B클래스에서 A클래스를 protected로 상속받았으므로 외부에서 A클래스의 함수를 사용할 수 없다.

 

7.

(1) 2번 업 캐스팅 , 3번 다운 캐스팅

(2) A클래스의 객체 a를 가리키는 B클래스의 포인터 q이다. 객체 a는 처음부터 A클래스의 것만 가지고 있지 B클래스의 것을 가지고 있지 않으므로 B클래스의 변수 y는 존재하지 않는다.

 

8.

(1) 3번 B클래스와 C클래스는 A클래스를 같이 상속받을 뿐 관계는 없다.

(2) z , x , w

(3) 3번 A클래스의 포인터가 D클래스를 가리키는데 B클래스의 변수를 호출하면 오류가 발생한다.

(4) dp = (D*)ap;

 

9. (순서 틀림)

(1)

생성자 A

생성자 B

(2)

생성자 A

생성자 B 10

(3)

생성자 A 32

생성자 B 400

 

10.

(1) A클래스에서 기본 생성자를 선언하지 않았으므로 오류가 발생한다.

(2)

class B {
public:
    B() : A(20) { cout << "생성자 B" << endl; }
    B(int x) { cout << "생성자 B " << x << endl; }
};

(3)

class B {
public:
    B() { cout << "생성자 B" << endl; }
    B(int x) : A(x + 20) { cout << "생성자 B " << x << endl; }
};

 

11. 3번 파생 클래스의 소멸자가 실행되고 그다음 기본 클래스의 소멸자가 실행된다.

 

12. 4번 다중 상속으로 인한 모호성은 컴파일 시에 발견된다.

 

13.

class Satellite : public Rocket, public Computer { ... };

 

14.

(1)

class HiPen : public Pen, public Eraser { ... };

(2)

class OmniPen : public Pen, public Eraser, public Lock { ... };

 

15. 4번 다중 상속으로 인한 모호성으로 변수 power가 어느 power를 가리키는지 알 수 없다.

class Vehicle {
public:
    int power;
};
class Car : virtual public Vehicle {
public:
    int color;
};
class Airplane : virtual public Vehicle {
public:
    int altitude;
};
class FlyingCar : public Car, public Airplane {
public:
    void go();
};

 

16. 다중 상속으로 인한 모호성이 생길 수 있다.

class TV {
public:
    int screenSize;
};
class ColorTV : virtual public TV {
public:
    int color;
};
class InternetTV : virtual public TV {
public:
    string ipAddr;
};
728x90

댓글