본문 바로가기
교재 및 CS공부/명품C++Programming

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

by veganwithbacon 2023. 4. 20.
반응형

1. 객체를 캡슐화하는 목적?

객체의 구성요소들을 보호하기 위해서

 

2. 클래스와 객체에 관한 설명 중 틀린 것은?

답: 3번

클래스의 멤버들은 private으로 접근 지정하는 것이 바람직하다.

 

3. 다음 C++코드가 객체 지향 언어의 캡슐화를 달성하는지 설명해라

int acc;
int add(int x){
	acc += x;
	return acc;
}
class Circle{
public:
	int radius;
	double getArea();
};

위 코드에서 

private:

           int radius; 로 바꿔주고 

double getArea();는 그대로

답 : 미달 땡

 

4. 다음 C++프로그램에 캡슐화가 부족한 부분을 수정해 캡슐화하라

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



------------------------수정--------------------------

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

 

5. 다음 코드는 Circle 클래스의 선언부이다.틀린 부분을 수정하라.

class Circle{
	int radius;
	double getArea();
 }
 
 --------------------------------------------
 
 class Circle{
 	int radius;
 public :
 	double getArea();
 }

 

6. 다음 코드는 Tower 클래스를 작성한 사례이다.틀린 부분을 수정하라.

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

 

7. 다음 코드에서 틀린 부분을 수정하라. 수정한 것이다

class Building{
private:
	int floor;
public:
	Building();
    Building(int s) { floor = s;}
};

int main(){
	Building twin, star;
	Building BlueHouse(5), JangMi(14);
    }

 

8. 다음 코드는 Calendar 클래스의 선언부이다. year를 10으로 초기화하는 생성자와 year값을 리턴하는 getYear()를 구현하라.

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

int Calendar::getYear(){return year;}

9. 생성자에 대한 설명 중 틀린 것은?

2) 생성자는 오직 하나만 작성 가능하다.

 

10. 소멸자에 대한 설명 중 틀린 것은?

소멸자는 매개변수, 리턴 타입, 중복이 없다

 

11. 다음 프로그램에 대해 답하여라.

class House{
	int numOfRooms;
	int size;
public:
	House(int n, int s);
};

void f(){
	House(int n, int s);
};
House b(3,30), c(4,40);
int main(){
	f();
	House d(5,50);
}
House::House(int n,int s){
	numOfRooms=n;
	size=r
    };
 House::House(){
 	cout<<"방의 크기: " <<size<<endl;
aaacout<<"방의 개수: " <<numOfRooms<<endl;
 }

객체의 소멸 순서와 생성 순서

: b 생성 -> c 생성 -> a 생성 -> a 소멸 -> d 생성 -> d 소멸 -> c 소멸 -> b 소멸

 

12. 다음 프로그램에서 객체 a,b,c가 생성되고 소멸되는 순서?

#include <iostream>
using namespace std;

class House{
	int numOfRooms;
	int size;
public:
	House(int n, int s){ numOfRooms =n; size=s;}
void test(){
House a(1,10);
}
};
void f(){
	House b(2,20);
    b.test();
}
House c(3,30);
int main(){
	f();
}

c생성-> b생성-> a생성-> a소멸 ->b소멸 -> c소멸

 

13. 다음 프로그램의 오류를 지적하고 수정하라.

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

위는 수정 전/ 아래는 수정 후

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

 

14. 다음 프로그램의 오류를 지적하고 수정하라.

class TV{
	int channels;
public:
	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);
}

위가 수정 전/ 아래가 수정 후

class TV{
public:
	int channels;
	int colors;
	TV() { channels = 256;}
	TV(int a, int b){channels = a; colors = b;}
};

 

15. 다음 코드에서 자동 인라인 함수를 찾아라.

class TV{
	int channels;
public :
	TV() { channels = 256;}
	TV(int a){channels = a;}
    int getChannels()
};
inline int TV::getChannels(){return channels;}

인라인 함수는 

TV()와 TV(int a) 두 가지다.

 

16.인라인 함수의 장단점을 설명한 것중 옳은 것은?

답 : 2번

 

17. 인라인 함수에 대해 잘못 설명한 것은?

인라인 함수는 작은 함수일 경우 효과적이다.

 

18. inline 선언은 강제가 아닌데, 다음 함수 중에서 컴파이러가 인라인으로 처리하기 적합한것은?

1번을 제외하면 다 인라인 적용하기 어렵다.

19. C++ 구조체(struct)에 대해 잘못 설명한 것은?

4번 c++구조체에서도 상속받을 수 있다

20. 다음 C++ 구조체를 동일한 의미를 가지는 클래스로 작성하라

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

21. 다음 클래스를 구조체로 선언하라

class Universe{
	char creator[10];
	int size;
private :
	char dateCreated[10];
public :
	Universe();
};
Struct Universe{
	public:
    	Universe();
	private:
		char creator[10];
		int size;
		dateCreated[10];
};

 

반응형

댓글