C++프로그래밍

(1970-01-01 기출문제 - 전체보기)
총 175문제 답안 완료: 0문제
C++프로그래밍
1. C++ 코드 중 문장 이해에 문제가 없는 부분은 ……으로 생략하였음 다음 중 함수에서 형식 매개변수의 값을 변경하면 실 매개변수의 값도 변경되게 하는 함수의 원형은? (2점)
정답을 선택하세요
1. void f(int x);
2. void f(int &x);
3. int f(const int x);
4. int f(const int &x);

C++프로그래밍
1. (1~3) 크기가 n인 int형 배열에 저장된 값들 중 최솟값과 최댓값을 구하는 다음 함수에 대한 질문에 답하라. ( ㄱ ) minmax (( ㄴ ), ( ㄷ ), int n) { min = max = arr[0]; for (int i=1 ; i < n ; i++) if (arr[i] > max) max = arr[i]; else if (arr[i] < min) min = arr[i]; } (ㄱ)에 넣을 적절한 단어는? (2점)
정답을 선택하세요
1. void
2. int
3. int&
4. int*

C++프로그래밍
1. (1~2) 다음은 함수 호출 문장의 int형 실 매개변수의 값을 서로 바꾸는 함수 swapValues이다. 다음 질문에 답하라. ( ㄱ ) swapValues ( ㄴ ) { int tmp = x; x = y; y = tmp; } (ㄱ)에 넣을 적절한 단어는? (2점)
정답을 선택하세요
1. int
2. double
3. int&
4. void

C++프로그래밍
1. (1~3) 크기가 n인 int형 배열에 저장된 값들 중 최솟값과 최댓값을 구하는 다음 함수에 대한 질문에 답하라. ( ㄱ ) minmax(( ㄴ ), ( ㄷ ), int n) { min = max = arr[0]; for (int i=1 ; i < n ; i++) if (arr[i] > max) max = arr[i]; else if (arr[i] < min) min = arr[i]; } (ㄱ)에 넣을 적절한 단어는? (2점)
정답을 선택하세요
1. void
2. int
3. int&
4. int*

C++프로그래밍
1. (1~2) 배열에 저장된 값의 최솟값을 찾는 다음 함수에 대한 질문에 답하라. int findMax ( ( ㄱ ) int arr[], int n) { int max = arr[0]; for (int i=1; i<n; i++) if (max < arr[i]) max = arr[i]; ( ㄴ ); } 이 함수에서 arr에 저장된 값을 변경하지 않도록 하기 위해 (ㄱ)에 넣을 적절한 단어는? (2점)
정답을 선택하세요
1. static
2. inline
3. private
4. const

C++프로그래밍
1. (1~2) 다음 함수 AddT는 시간과 분 단위로 표현된 구조체인 TimeRec의 인수를 t1과 t2에 받아 그 합을 t1에 해당되는 실매개변수에 저장하는 함수이다. 다음 질문에 답하라. struct TimeRec { int hours, minutes; }; ( ㄱ ) AddT(( ㄴ ) t1, ( ㄷ ) t2) { t1.minutes += t2.minutes; t1.hours += t2.hours + t1.minutes/60; t1.minutes %= 60; } ㈀에 넣을 적절한 단어는? (2점)
정답을 선택하세요
1. void
2. int
3. float
4. TimeRec

C++프로그래밍
1. (1~4) 데이터의 평균을 구하는 다음 함수에 대한 질문에 답하라. double average(const int arr[], int n) { int sum = 0; for (int i=0 ; i < n ; i++) sum += arr[i]; (   ㄱ   ) } 이 함수의 몸체 블록에서 사용할 수 없는 문장은? (2점)
정답을 선택하세요
1. cout << sum;
2. arr[0] = 0;
3. cout << endl;
4. cout << arr[0];

C++프로그래밍
2. C++ 코드 중 문장 이해에 문제가 없는 부분은 ……으로 생략하였음 C++에서 함수를 정의하는 방법에 대한 올바른 설명은? (3점)
정답을 선택하세요
1. void형 함수는 return 명령으로 값을 반환하지 않는다.
2. 인수는 최대 3개까지 함수에 전달할 수 있다.
3. 순환호출을 하는 함수는 inline으로 정의한다.
4. 지역변수는 함수 몸체의 앞부분에 모두 선언해야 한다.

C++프로그래밍
2. (1~3) 크기가 n인 int형 배열에 저장된 값들 중 최솟값과 최댓값을 구하는 다음 함수에 대한 질문에 답하라. ( ㄱ ) minmax (( ㄴ ), ( ㄷ ), int n) { min = max = arr[0]; for (int i=1 ; i < n ; i++) if (arr[i] > max) max = arr[i]; else if (arr[i] < min) min = arr[i]; } 배열을 arr이라는 형식 매개변수를 통해 받고자 한다. 함수 안에서 arr에 전달되는 실 매개변수의 값을 변경할 수 없도록 하려면 (ㄴ)에 어떠한 내용이 필요한가? (2점)
정답을 선택하세요
1. void arr[]
2. int arr[]
3. const int arr[]
4. static int arr[]

C++프로그래밍
2. (1~2) 다음은 함수 호출 문장의 int형 실 매개변수의 값을 서로 바꾸는 함수 swapValues이다. 다음 질문에 답하라. ( ㄱ ) swapValues ( ㄴ ) { int tmp = x; x = y; y = tmp; } ㈁에 작성할 형식 매개변수 선언문으로 적절한 것은? (2점)
정답을 선택하세요
1. int x, y;
2. int &x, int &y
3. int *x, int *y
4. const int &x, const int &y

C++프로그래밍
2. (1~3) 크기가 n인 int형 배열에 저장된 값들 중 최솟값과 최댓값을 구하는 다음 함수에 대한 질문에 답하라. ( ㄱ ) minmax(( ㄴ ), ( ㄷ ), int n) { min = max = arr[0]; for (int i=1 ; i < n ; i++) if (arr[i] > max) max = arr[i]; else if (arr[i] < min) min = arr[i]; } 배열을 arr이라는 형식 매개변수를 통해 받고자 한다. 함수 안에서 arr에 전달되는 실 매개변수의 값을 변경할 수 없도록 하려면 (ㄴ)에 어떠한 내용이 필요한가? (2점)
정답을 선택하세요
1. void arr[]
2. int arr[]
3. const int arr[]
4. static int arr[]

C++프로그래밍
2. (1~2) 배열에 저장된 값의 최솟값을 찾는 다음 함수에 대한 질문에 답하라. int findMax ( ( ㄱ ) int arr[], int n) { int max = arr[0]; for (int i=1; i<n; i++) if (max < arr[i]) max = arr[i]; ( ㄴ ); } 이 함수를 완성하기 위해 (ㄴ)에 넣을 적절한 문장은? (2점)
정답을 선택하세요
1. cout << max;
2. return max;
3. return;
4. return &max;

C++프로그래밍
2. (1~2) 다음 함수 AddT는 시간과 분 단위로 표현된 구조체인 TimeRec의 인수를 t1과 t2에 받아 그 합을 t1에 해당되는 실매개변수에 저장하는 함수이다. 다음 질문에 답하라. struct TimeRec { int hours, minutes; }; ( ㄱ ) AddT(( ㄴ ) t1, ( ㄷ ) t2) { t1.minutes += t2.minutes; t1.hours += t2.hours + t1.minutes/60; t1.minutes %= 60; } ㈁과 ㈂에 넣을 적절한 내용은? (3점)
정답을 선택하세요
1. ㈁ const TimeRec ㈂ const TimeRec
2. ㈁ TimeRec    ㈂ const TimeRec
3. ㈁ const TimeRec& ㈂ const TimeRec&
4. ㈁ TimeRec&   ㈂ const TimeRec&

C++프로그래밍
2. (1~4) 데이터의 평균을 구하는 다음 함수에 대한 질문에 답하라. double average(const int arr[], int n) { int sum = 0; for (int i=0 ; i < n ; i++) sum += arr[i]; (   ㄱ   ) } 다음 중 (ㄱ)에 넣을 가장 적절한 문장은? (2점)
정답을 선택하세요
1. return sum / 10.0;
2. return sum / n;
3. return sum / i;
4. return static_cast<double>(sum) / n;

C++프로그래밍
3. C++ 코드 중 문장 이해에 문제가 없는 부분은 ……으로 생략하였음 다음 함수의 몸체 블록 (ㄱ)에서 사용할 수 있는 명령은? (2점) int g(const int arr[], int n) { // n:배열의 크기 (   ㄱ   ) }
정답을 선택하세요
1. cin >> arr[1];
2. arr[0] += 10;
3. return "abc";
4. int sum = arr[0];

C++프로그래밍
3. (1~3) 크기가 n인 int형 배열에 저장된 값들 중 최솟값과 최댓값을 구하는 다음 함수에 대한 질문에 답하라. ( ㄱ ) minmax (( ㄴ ), ( ㄷ ), int n) { min = max = arr[0]; for (int i=1 ; i < n ; i++) if (arr[i] > max) max = arr[i]; else if (arr[i] < min) min = arr[i]; } 이 함수에서 구한 최솟값과 최댓값이 실 매개변수에 저장되도록 하려면 (ㄷ)에 어떠한 내용이 필요한가? (3점)
정답을 선택하세요
1. int min, int max
2. int& min, int& max
3. const int& min, const int& max
4. int* min, int* max

C++프로그래밍
3. 함수의 디폴트 인수에 대한 올바른 설명은? (2점)
정답을 선택하세요
1. 호출 시 디폴트 값을 인수로 사용할 경우 생략할 수 있다.
2. 디폴트 인수는 다른 인수의 앞에 있어야 한다.
3. 디폴트 인수는 상수만 전달할 수 있다.
4. 디폴트 값과 다른 값을 인수로 전달할 수 없다.

C++프로그래밍
3. (1~3) 크기가 n인 int형 배열에 저장된 값들 중 최솟값과 최댓값을 구하는 다음 함수에 대한 질문에 답하라. ( ㄱ ) minmax(( ㄴ ), ( ㄷ ), int n) { min = max = arr[0]; for (int i=1 ; i < n ; i++) if (arr[i] > max) max = arr[i]; else if (arr[i] < min) min = arr[i]; } 이 함수에서 구한 최솟값과 최댓값이 실 매개변수에 저장되도록 하려면 (ㄷ)에 어떠한 내용이 필요한가? (3점)
정답을 선택하세요
1. int min, int max
2. int& min, int& max
3. const int& min, const int& max
4. int* min, int* max

C++프로그래밍
3. 함수 f의 원형이 다음과 같을 때 이 함수에 대한 올바른 설명은? (2점) void f(int &x, int y, int z=100);
정답을 선택하세요
1. z의 값은 항상 100으로, 함수 안에서 변경할 수 없다.
2. f에서는 return 명령을 사용할 수 없다.
3. f에서 x의 값을 변경하면 함수 호출문장의 해당 실 매개변수의 값이 변경된다.
4. f에서 y의 값을 변경하면 함수 호출문장의 해당 실 매개변수의 값이 변경된다.

C++프로그래밍
3. 다음 중 inline 함수에 대한 설명으로 옳은 것은? (2점)
정답을 선택하세요
1. 인수를 받지 않는다.
2. 일반 함수에 비해 호출 과정에 많은 시간이 걸린다.
3. #define을 이용한 매크로와 동일하다.
4. 프로그램에서그함수에 대한 포인터를 사용하는 경우 inline 선언은 효력이 없다.

C++프로그래밍
3. (1~4) 데이터의 평균을 구하는 다음 함수에 대한 질문에 답하라. double average(const int arr[], int n) { int sum = 0; for (int i=0 ; i < n ; i++) sum += arr[i]; (   ㄱ   ) } 이 함수에 대한 원형을 올바르게 작성한 것은? (2점)
정답을 선택하세요
1. double average();
2. average(const int arr[], int n);
3. double average(const int arr[], int n);
4. double average() { }

C++프로그래밍
4. C++ 코드 중 문장 이해에 문제가 없는 부분은 ……으로 생략하였음 다음 중 함수 다중정의에 대한 올바른 설명은? (4점)
정답을 선택하세요
1. 다중정의된 함수는 인수의 개수나 자료형으로 구분한다.
2. 다중정의는 최대 3개까지 할 수 있다.
3. 다중정의된 함수들은 반환하는 자료형이 동일해야 한다.
4. 다중정의된 함수들은 모두 void형이어야 한다.

C++프로그래밍
4. 다음 중 C++에서 함수를 정의하고 호출하는 것과 관련하여 올바르게 설명한 것은? (4점)
정답을 선택하세요
1. 함수의 이름은 모두 달라야 한다.
2. 디폴트 인수는 매개변수 목록 중 앞에 위치해야 한다.
3. 순환호출을 포함하는 함수는 inline 함수로 컴파일된다.
4. 뒤에 정의된 함수를 호출하려면 먼저 그 함수의 원형을 선언해야 한다.

C++프로그래밍
4. 다음과 같이 원형이 선언된 함수에 대한 올바른 설명은? (2점) void func(const Coord2D& c, int x, int y=10);
정답을 선택하세요
1. return 명령으로 임의의 자료형의 값을 반환할 수 있다.
2. y의 값은 항상 10이 전달된다.
3. 함수에서 x의 값을 변경하면 해당되는 실매개변수의 값이 함께 변경된다.
4. 함수 안에서 c의 내용을 수정할 수 없다.

C++프로그래밍
4. 다음 중 C++에서 함수를 정의하고 호출하는 것과 관련하여 올바르게 설명한 것은? (4점)
정답을 선택하세요
1. 함수의 이름은 모두 달라야 한다.
2. 디폴트 인수는 매개변수 목록 중 앞에 위치해야 한다.
3. 순환호출을 포함하는 함수는 inline 함수로 컴파일된다.
4. 뒤에 정의된 함수를 호출하려면 먼저 그 함수의 원형을 선언해야 한다.

C++프로그래밍
4. 다음 중 함수 다중정의에 대한 올바른 설명은? (4점)
정답을 선택하세요
1. 다중정의된 함수들은 반환하는 자료형이 동일해야 한다.
2. 다중정의된 함수들은 인수의 개수나 자료형에 따라 구분한다.
3. 다중정의된 함수들은 모두 void형이어야 한다.
4. 동일한 작업을 하지만 서로 다른 이름을 갖는 함수를 여러 개 정의하는 것이다.

C++프로그래밍
4. 다음과 같이 함수가 정의되어 있을 때 이 함수를 다중정의한 것으로 올바르지 않은 것은? (3점) int f(int x);
정답을 선택하세요
1. double f(double x);
2. int f(int x, int y);
3. void f(int x);
4. void f(int* p);

C++프로그래밍
4. (1~4) 데이터의 평균을 구하는 다음 함수에 대한 질문에 답하라. double average(const int arr[], int n) { int sum = 0; for (int i=0 ; i < n ; i++) sum += arr[i]; (   ㄱ   ) } 이 함수가 정의되어 있을 때, 다중정의 할 수 있는 함수의 원형으로 적절하지 않은 것은? (3점)
정답을 선택하세요
1. void average(const int arr[], int n);
2. double average(const double arr[], int n);
3. float average(const std::vector<float>& v);
4. float average(float a, float b, float c);

C++프로그래밍
5. C++ 코드 중 문장 이해에 문제가 없는 부분은 ……으로 생략하였음 다음 함수에 대한 설명이 올바른 것은? (2점) int& h(int a, int b=10, int c=20);
정답을 선택하세요
1. int형 값을 반환한다.
2. b와 c는 항상 각각 10과 20이다.
3. h(10, 30)이라고 호출하면 c에는 20이 전달된다.
4. h(5, 20)이라고 호출하면 b에는 10이 전달된다.

C++프로그래밍
5. 다중정의된 함수들 중에서 어느 함수를 호출하는가를 결정하는 것은 다음 중 무엇인가? (3점)
정답을 선택하세요
1. 인수의 개수 및 자료형
2. 함수가 반환하는 값의 자료형
3. 호출된 위치에서 가까운 곳에 정의된 함수
4. 지역변수의 개수

C++프로그래밍
5. 다음 함수의 원형 ㈀∼㈃ 중 아래 문장 ⒜에 의해 호출되는 함수는? (3점) int f(int x, int y);    // ㈀ int f(float x, float y);  // ㈁ int f(int x, double y); // ㈂ void f(int x);      // ㈃ int a = f(10, 2.0);   // ⒜
정답을 선택하세요
1. ㈀
2. ㈁
3. ㈂
4. ㈃

C++프로그래밍
5. 다중정의된 함수들 중에서 어느 함수를 호출하는가를 결정하는 것은 다음 중 무엇인가? (3점)
정답을 선택하세요
1. 인수의 개수 및 자료형
2. 함수가 반환하는 값의 자료형
3. 호출된 위치에서 가까운 곳에 정의된 함수
4. 지역변수의 개수

C++프로그래밍
5. (5~8) 원을 나타내는 다음 클래스에 대한 질문에 답하라. class Circle { (  ㄱ  ):// Circle의 멤버함수에서만 사용 가능한 멤버 double cs, cy, radius; // 중심 x, y 좌표 및 반경 (  ㄴ  ):// Circle 외부의 함수에서도 사용할 수 있는 멤버 (  ㄷ  ) void scale(double s) ( a ) { radius *= s; } double area() ( b ) { // 면적 계산 return radius * radius * 3.14159; } double circumference() ( c ) { // 원주 길이 계산 return 2.0 * 3.14159 * radius; } }; int main() { // 중심좌표 (1, 2), 반경 5인 Circle 객체 c 선언 Circle c(1, 2, 5); (  ㄹ  ) } cx, cy, radius는 소속 클래스의 멤버함수에서만 사용할 수 있도록 하려고 하고, scale, area, circumference 등은 클래스 외부에서도 자유롭게 사용할 수 있게 하려고 한다. (ㄱ)과 (ㄴ)에 넣을 적절한 단어는? (3점)
정답을 선택하세요
1. (ㄱ) private, (ㄴ) public
2. (ㄱ) private, (ㄴ) protected
3. (ㄱ) public, (ㄴ) private
4. (ㄱ) protected, (ㄴ) private

C++프로그래밍
5. 다음과 같이 선언된 함수에 대한 ㈀ 호출명령 및 ㈁ 실제 호출 내용이 올바른 것은? (2점) void g(int x, int y=0, int z=100);
정답을 선택하세요
1. ㈀ g(10); ㈁ g(10, 0, 100);
2. ㈀ g(10, 0); ㈁ g(10, 0, 0);
3. ㈀ g(10, 100); ㈁ g(10, 0, 100);
4. ㈀ g(10, , 10); ㈁ g(10, 0, 10);

C++프로그래밍
5. 다음 중 함수 호출 위치에 함수의 처리 문장을 삽입하여 번역하도록 요청하기 위해 함수 선언문에 사용하는 단어는? (3점)
정답을 선택하세요
1. switch
2. inline
3. static
4. auto

C++프로그래밍
6. (6~9) 최댓값이 정해진 계수기 객체를 만들기 위한 클래스인 Counter의 선언문에 대한 질문에 답하라. class CounterM { const int maxValue; int value; ( ㄱ ): ( ㄴ ) (int mVal):maxValue(mVal+1), value(0) { } void reset(){ value = 0; } void count(){ value = (value + 1) % maxValue; } int getValue()const { return value; } }; 멤버함수들을 클래스 멤버가 아닌 함수에서 사용할 수 있도록 하기 위해 (ㄱ)에 넣을 단어는? (3점)
정답을 선택하세요
1. private
2. protected
3. public
4. friend

C++프로그래밍
6. (6~8) 다음 Counter 클래스의 선언문에 대한 질문에 답하라. class Counter { int value; public: (  ㄱ  ) void reset() (  ㄴ  ) { value = 0; } void count() (  ㄷ  ) { ++value; } int getValue() (  ㄹ  ) { return value; } }; 데이터멤버 value의 가시성은 무엇인가? (3점)
정답을 선택하세요
1. protected
2. private
3. public
4. friend

C++프로그래밍
6. (6~8) 다음은 계수를 지시하면 1씩 감소하는 하향계수기 클래스의 선언문이다. 질문에 답하라. class DnCounter { const int max; // 계수기의 최댓값 int value;    // 계수기의 현재 값. public: (  ㄱ  ) void reset() { value = max; } void count() { value = value ? value-1:max; } int getValue() const { return value; } }; ㈀에 넣을 DnCounter 클래스의 생성자 선언 문장으로 올바른 것은? (4점)
정답을 선택하세요
1. DnCounter(int m):max(m), value(m) {}
2. int DnCounter(int m) { max = value = m; }
3. void DnCounter(int m):value(m) { max = m; }
4. DnCounter(int m):max(m) { return value = m; }

C++프로그래밍
6. (6~8) 다음 Counter 클래스의 선언문에 대한 질문에 답하라. class Counter { int value; public: (   ㄱ   ) void reset() ( ㄴ ) { value = 0; } void count() ( ㄷ ) { ++value; } int getValue() ( ㄹ ) { return value; } }; 데이터멤버 value의 가시성은 무엇인가? (3점)
정답을 선택하세요
1. protected
2. private
3. public
4. friend

C++프로그래밍
6. (5~8) 원을 나타내는 다음 클래스에 대한 질문에 답하라. class Circle { (  ㄱ  ):// Circle의 멤버함수에서만 사용 가능한 멤버 double cs, cy, radius; // 중심 x, y 좌표 및 반경 (  ㄴ  ):// Circle 외부의 함수에서도 사용할 수 있는 멤버 (  ㄷ  ) void scale(double s) ( a ) { radius *= s; } double area() ( b ) { // 면적 계산 return radius * radius * 3.14159; } double circumference() ( c ) { // 원주 길이 계산 return 2.0 * 3.14159 * radius; } }; int main() { // 중심좌표 (1, 2), 반경 5인 Circle 객체 c 선언 Circle c(1, 2, 5); (  ㄹ  ) } main함수의 c와 같이 Circle 클래스의 생성자를 선언하기 위해 (ㄷ)에 넣을 적절한 선언문은? (4점)
정답을 선택하세요
1. int Circle(double x, double y, double r): cx(x), cy(y), radius(r) {return 0; }
2. void Circle(double x, double y, double r) { cx = x, cy = y, radius = r; }
3. Circle(double x, double y, double r) const { cx = x, cy = y, radius = r; }
4. Circle(double x, double y, double r): cx(x), cy(y), radius(r) {}

C++프로그래밍
6. (6~9) 다음은 1씩 계수를 하는 Counter 클래스의 선언문이다. count는 value를 1씩 증가시키되, 목표값(target)에 도달하면 true를, 그렇지 않으면 false를 반환한다. class Counter { int value, target; public: (   ㄱ   ) (   ㄴ   ) void reset(int v=0) ( ㄷ ) { value = v; } void newTarget(int t) ( ㄹ ) { target = t; } bool count() ( ㅁ ) { return ++value == target; } int getValue() ( ㅂ ) { return value; } }; 다음 중 가시성이 private인 멤버는? (4점)
정답을 선택하세요
1. target
2. reset
3. count
4. getValue

C++프로그래밍
6. (6~9) 1씩 감소하는 계수를 할 수 있는 하향 계수기 클래스인 DnCounter에 대한 질문에 답하라. class DnCounter { int value; public: DnCounter(int v) (  ㄱ  ) // 생성자 void reset(int v) { value = v; } void count() { --value; } int getValue() const { return value; } }; value의 가시성은 무엇인가? (4점)
정답을 선택하세요
1. public
2. protected
3. private
4. virtual

C++프로그래밍
7. (6~9) 최댓값이 정해진 계수기 객체를 만들기 위한 클래스인 Counter의 선언문에 대한 질문에 답하라. class CounterM { const int maxValue; int value; ( ㄱ ): ( ㄴ ) (int mVal):maxValue(mVal+1), value(0) { } void reset(){ value = 0; } void count(){ value = (value + 1) % maxValue; } int getValue()const { return value; } }; 생성자를 선언하기 위해 (ㄴ)에 넣을 내용은? (3점)
정답을 선택하세요
1. void CounterM
2. std::CounterM
3. int ~CounterM
4. CounterM

C++프로그래밍
7. (6~8) 다음 Counter 클래스의 선언문에 대한 질문에 답하라. class Counter { int value; public: (  ㄱ  ) void reset() (  ㄴ  ) { value = 0; } void count() (  ㄷ  ) { ++value; } int getValue() (  ㄹ  ) { return value; } }; (ㄱ)에 생성자를 선언하고자 한다. value의 값을 0으로 초기화하도록 올바르게 작성한 문장은? (4점)
정답을 선택하세요
1. void init():value(0) { }
2. int Counter() { value = 0; }
3. void Counter() { value = 0; return 0; }
4. Counter():value(0) { }

C++프로그래밍
7. (6~8) 다음은 계수를 지시하면 1씩 감소하는 하향계수기 클래스의 선언문이다. 질문에 답하라. class DnCounter { const int max; // 계수기의 최댓값 int value;    // 계수기의 현재 값. public: (  ㄱ  ) void reset() { value = max; } void count() { value = value ? value-1:max; } int getValue() const { return value; } }; 문제 41의 생성자가 선언된 경우 DnCounter 클래스의 객체를 선언하는 올바른 문장은? (3점)
정답을 선택하세요
1. DnCounter c;
2. DnCounter c(9);
3. DnCounter c = 9;
4. DnCounter(9) c;

C++프로그래밍
7. (6~8) 다음 Counter 클래스의 선언문에 대한 질문에 답하라. class Counter { int value; public: (   ㄱ   ) void reset() ( ㄴ ) { value = 0; } void count() ( ㄷ ) { ++value; } int getValue() ( ㄹ ) { return value; } }; (ㄱ)에 생성자를 선언하고자 한다. value의 값을 0으로 초기화하도록 올바르게 작성한 문장은? (4점)
정답을 선택하세요
1. void init():value(0) { }
2. int Counter() { value = 0; }
3. void Counter() { value = 0; return 0; }
4. Counter():value(0) { }

C++프로그래밍
7. (5~8) 원을 나타내는 다음 클래스에 대한 질문에 답하라. class Circle { (  ㄱ  ):// Circle의 멤버함수에서만 사용 가능한 멤버 double cs, cy, radius; // 중심 x, y 좌표 및 반경 (  ㄴ  ):// Circle 외부의 함수에서도 사용할 수 있는 멤버 (  ㄷ  ) void scale(double s) ( a ) { radius *= s; } double area() ( b ) { // 면적 계산 return radius * radius * 3.14159; } double circumference() ( c ) { // 원주 길이 계산 return 2.0 * 3.14159 * radius; } }; int main() { // 중심좌표 (1, 2), 반경 5인 Circle 객체 c 선언 Circle c(1, 2, 5); (  ㄹ  ) } (a)~(c) 중 'const'를 넣을 곳을 모두 나열한 것은? (2점)
정답을 선택하세요
1. (a)
2. (b)와 (c)
3. (a)와 (c)
4. 모두

C++프로그래밍
7. (6~9) 다음은 1씩 계수를 하는 Counter 클래스의 선언문이다. count는 value를 1씩 증가시키되, 목표값(target)에 도달하면 true를, 그렇지 않으면 false를 반환한다. class Counter { int value, target; public: (   ㄱ   ) (   ㄴ   ) void reset(int v=0) ( ㄷ ) { value = v; } void newTarget(int t) ( ㄹ ) { target = t; } bool count() ( ㅁ ) { return ++value == target; } int getValue() ( ㅂ ) { return value; } }; 다음과 같이 객체를 만들면 value는 0으로, target은 10으로 초기화되게 하려면 ㈀에 어떤 문장을 넣으면 되는가? (4점) Counter c(10);
정답을 선택하세요
1. Counter(int value=0, int t) { target = t; }
2. Counter(int t):value(0), target(t) {}
3. void Counter(int t) { value(0); target(t); }
4. int Counter(int t) { target = t; return 0; }

C++프로그래밍
7. (6~9) 1씩 감소하는 계수를 할 수 있는 하향 계수기 클래스인 DnCounter에 대한 질문에 답하라. class DnCounter { int value; public: DnCounter(int v) (  ㄱ  ) // 생성자 void reset(int v) { value = v; } void count() { --value; } int getValue() const { return value; } }; 생성자에서 형식 매개변수 v에 전달된 값으로 데이터멤버 value를 초기화하기 위해 (ㄱ)에 넣을 내용은? (2점)
정답을 선택하세요
1. { value{v}; }
2. :DnCounter(v) { }
3. :v(value) { }
4. :value{v} { }

C++프로그래밍
8. (6~9) 최댓값이 정해진 계수기 객체를 만들기 위한 클래스인 Counter의 선언문에 대한 질문에 답하라. class CounterM { const int maxValue; int value; ( ㄱ ): ( ㄴ ) (int mVal):maxValue(mVal+1), value(0) { } void reset(){ value = 0; } void count(){ value = (value + 1) % maxValue; } int getValue()const { return value; } }; 다음 중 CounterM 클래스의 객체를 만드는 문장으로 적절한 것은? (4점)
정답을 선택하세요
1. CounterM cnt(99);
2. CounterM cnt;
3. CounterM* pt = new CounterM;
4. CounterM& pt = new CounterM(999);

C++프로그래밍
8. (6~8) 다음 Counter 클래스의 선언문에 대한 질문에 답하라. class Counter { int value; public: (  ㄱ  ) void reset() (  ㄴ  ) { value = 0; } void count() (  ㄷ  ) { ++value; } int getValue() (  ㄹ  ) { return value; } }; (ㄴ)~(ㄹ) 중 const를 넣는 것이 바람직한 곳은? (2점)
정답을 선택하세요
1. ㈁
2. ㈂
3. ㈃
4. 모두

C++프로그래밍
8. (6~8) 다음은 계수를 지시하면 1씩 감소하는 하향계수기 클래스의 선언문이다. 질문에 답하라. class DnCounter { const int max; // 계수기의 최댓값 int value;    // 계수기의 현재 값. public: (  ㄱ  ) void reset() { value = max; } void count() { value = value ? value-1:max; } int getValue() const { return value; } }; 다음 중 아래의 함수 g의 몸체 블록 ㈎에서 사용할 수 있는 문장은 무엇인가? (가시성과 const에 유의하라.) (2점) void g(const DnCounter& cnt) { (  가  ) }
정답을 선택하세요
1. cnt.count();
2. cnt.reset();
3. int n = cnt.value;
4. cout << cnt.getValue();

C++프로그래밍
8. (6~8) 다음 Counter 클래스의 선언문에 대한 질문에 답하라. class Counter { int value; public: (   ㄱ   ) void reset() ( ㄴ ) { value = 0; } void count() ( ㄷ ) { ++value; } int getValue() ( ㄹ ) { return value; } }; (ㄴ)~(ㄹ) 중 const를 넣는 것이 바람직한 곳은? (2점)
정답을 선택하세요
1. ㈁
2. ㈂
3. ㈃
4. 모두

C++프로그래밍
8. (5~8) 원을 나타내는 다음 클래스에 대한 질문에 답하라. class Circle { (  ㄱ  ):// Circle의 멤버함수에서만 사용 가능한 멤버 double cs, cy, radius; // 중심 x, y 좌표 및 반경 (  ㄴ  ):// Circle 외부의 함수에서도 사용할 수 있는 멤버 (  ㄷ  ) void scale(double s) ( a ) { radius *= s; } double area() ( b ) { // 면적 계산 return radius * radius * 3.14159; } double circumference() ( c ) { // 원주 길이 계산 return 2.0 * 3.14159 * radius; } }; int main() { // 중심좌표 (1, 2), 반경 5인 Circle 객체 c 선언 Circle c(1, 2, 5); (  ㄹ  ) } 다음 중 (ㄹ)에서 사용할 수 있는 문장은? (4점)
정답을 선택하세요
1. cin >> c.radius;
2. cout << c.cx << "," << c.cy;
3. cout << c.area();
4. c.radius *= 10;

C++프로그래밍
8. (6~9) 다음은 1씩 계수를 하는 Counter 클래스의 선언문이다. count는 value를 1씩 증가시키되, 목표값(target)에 도달하면 true를, 그렇지 않으면 false를 반환한다. class Counter { int value, target; public: (   ㄱ   ) (   ㄴ   ) void reset(int v=0) ( ㄷ ) { value = v; } void newTarget(int t) ( ㄹ ) { target = t; } bool count() ( ㅁ ) { return ++value == target; } int getValue() ( ㅂ ) { return value; } }; ㈁에는 복사생성자의 원형을 선언하고자 한다. 다음 중 적절한 표현은? (3점)
정답을 선택하세요
1. Counter Counter(Counter& c);
2. void Counter(Counter c);
3. Counter(const Counter& c);
4. Counter(Counter c);

C++프로그래밍
8. (6~9) 1씩 감소하는 계수를 할 수 있는 하향 계수기 클래스인 DnCounter에 대한 질문에 답하라. class DnCounter { int value; public: DnCounter(int v) (  ㄱ  ) // 생성자 void reset(int v) { value = v; } void count() { --value; } int getValue() const { return value; } }; 다음 중 DnCounter 클래스의 객체를 선언하는 문장으로 올바른 것은? (3점)
정답을 선택하세요
1. DnCounter c(10);
2. DnCounter c;
3. DnCounter c:value(10);
4. DnCounter *p = new DnCounter;

C++프로그래밍
9. (6~9) 최댓값이 정해진 계수기 객체를 만들기 위한 클래스인 Counter의 선언문에 대한 질문에 답하라. class CounterM { const int maxValue; int value; ( ㄱ ): ( ㄴ ) (int mVal):maxValue(mVal+1), value(0) { } void reset(){ value = 0; } void count(){ value = (value + 1) % maxValue; } int getValue()const { return value; } }; 함수 g의 몸체 블록 (ㄷ)에서 사용할 수 있는 문장은? (2점) int g(const CounterM& c) { (   ㄷ   ) }
정답을 선택하세요
1. c.count();
2. c.reset();
3. cout << c.value;
4. int n = c.getValue();

C++프로그래밍
9. 다음 중 소멸자에 대해 적절히 설명하고 있는 문장은? (4점)
정답을 선택하세요
1. 소멸자는 다중정의를 할 수 없다.
2. 소멸자는 명시적으로 호출하여 실행한다.
3. 소멸자는 int형 값을 반환한다.
4. 소멸자는 형식 매개변수를 통해 필요한 값을 받을 수 있다.

C++프로그래밍
9. 다음 중 생성자에 대한 설명으로 올바른 것은? (4점)
정답을 선택하세요
1. return 명령으로 값을 반환할 수 있다.
2. 생성자는 매개변수를 포함할 수 없다.
3. 생성자는 다중정의를 할 수 있다.
4. 생성자에서는 데이터 멤버를 수정할 수 없다.

C++프로그래밍
9. 다음 중 소멸자에 대해 적절히 설명하고 있는 문장은? (4점)
정답을 선택하세요
1. 소멸자는 다중정의를 할 수 없다.
2. 소멸자는 명시적으로 호출하여 실행한다.
3. 소멸자는 int형 값을 반환한다.
4. 소멸자는 형식 매개변수를 통해 필요한 값을 받을 수 있다.

C++프로그래밍
9. 다음 중 소멸자에 대한 설명으로 적절한 것은? (3점)
정답을 선택하세요
1. 소멸자는 int형 값을 반환한다.
2. 소멸자는 1개의 int형 형식 매개변수가 있다.
3. 소멸자는 다중정의를 할 수 없다.
4. 소멸자는 일반적으로 private으로 선언한다.

C++프로그래밍
9. (6~9) 다음은 1씩 계수를 하는 Counter 클래스의 선언문이다. count는 value를 1씩 증가시키되, 목표값(target)에 도달하면 true를, 그렇지 않으면 false를 반환한다. class Counter { int value, target; public: (   ㄱ   ) (   ㄴ   ) void reset(int v=0) ( ㄷ ) { value = v; } void newTarget(int t) ( ㄹ ) { target = t; } bool count() ( ㅁ ) { return ++value == target; } int getValue() ( ㅂ ) { return value; } }; ㈂~㈅ 중 const를 넣을 곳은? (3점)
정답을 선택하세요
1. ㈂
2. ㈃
3. ㈄
4. ㈅

C++프로그래밍
9. (6~9) 1씩 감소하는 계수를 할 수 있는 하향 계수기 클래스인 DnCounter에 대한 질문에 답하라. class DnCounter { int value; public: DnCounter(int v) (  ㄱ  ) // 생성자 void reset(int v) { value = v; } void count() { --value; } int getValue() const { return value; } }; 다음 함수 안에서 사용할 수 있는 문장은 무엇인가? (2점) void f(const DnCounter& c) { …… }
정답을 선택하세요
1. c.reset(10);
2. int n = c.getValue();
3. c.count();
4. cout << c.value;

C++프로그래밍
10. 다음 중 ClassA라는 클래스의 소멸자의 머리에 해당되는 것으로 적절한 것은 무엇인가? (3점)
정답을 선택하세요
1. ClassA(int x)
2. ~ClassA()
3. void ~ClassA(int)
4. int ~ClassA()

C++프로그래밍
10. (10~11) 다음 클래스 선언문에 대한 질문에 답하라. class Copycat { char *name; public: Copycat(const char *n) { name = new char[strlen(n)+1]; strcpy(name, n); } (  ㄱ  ) { name = new char[strlen(cc.name)+1]; strcpy(name, cc.name); } (  ㄴ  ) …… }; 복사 생성자를 선언하기 위해 (ㄱ)에 필요한 내용은? (3점)
정답을 선택하세요
1. void Copycat(Copycat cc)
2. Copycat(Copycat cc)
3. void Copycat(const Copycat* cc)
4. Copycat(const Copycat& cc)

C++프로그래밍
10. 다음 중 소멸자에 대한 설명으로 올바른 것은? (4점)
정답을 선택하세요
1. 소멸자의 이름은 클래스 이름 앞에 '~'를 붙인 것이다.
2. return 명령으로 값을 반환할 수 있다.
3. 프로그래머의 호출 명령이 있어야 동작한다.
4. 매개변수를 통해 인수를 전달받을 수 있다.

C++프로그래밍
10. (10~11) 다음 클래스 선언문에 대한 질문에 답하라. class Copycat { char *name; public: Copycat(const char *n) { name = new char[strlen(n)+1]; strcpy(name, n); } (   ㄱ   ) { name = new char[strlen(cc.name)+1]; strcpy(name, cc.name); } (   ㄴ   ) …… }; 복사 생성자를 선언하기 위해 (ㄱ)에 필요한 내용은? (3점)
정답을 선택하세요
1. void Copycat(Copycat cc)
2. Copycat(Copycat cc)
3. void Copycat(const Copycat* cc)
4. Copycat(const Copycat& cc)

C++프로그래밍
10. ClassA라는 클래스에서 복사생성자를 선언할 때 생성자의 원형으로 올바른 것은? (2점)
정답을 선택하세요
1. ClassA(const ClassA& a);
2. ClassA(ClassA& a) const;
3. ClassA(ClassA a) const;
4. ClassA();

C++프로그래밍
10. (10~12) 다음은 연필의 개수를 12자루 묶음의 타와 낱개로 표현하는 클래스이다. 생성자는 2개의 int값 인수를 받아 타와 낱개의 값을 초기화하는 것과 1개의 int값 인수를 받아 타와 낱개로 변환하여 초기화하는 것이 정의되어 있다고 가정한다. class Pencils { int dozens, np;  // 타, 낱개 public: ……  // 생성자(생략) (   ㄱ   ) { Pencils p(*this); if (++np == 12) ++dozens, np = 0; return p; } Pencils operator+(const Pencils& p) const; (   ㄴ   ) int getDozens() const { return dozens; } int getNP() const { return np; } }; 6~8행의 내용으로 볼 때 ㈀에 넣을 내용은 무엇인가? (2점)
정답을 선택하세요
1. Pencils operator++(int p) const
2. Pencils operator++(const Pencils& p)
3. Pencils operator++()
4. Pencils operator++(int)

C++프로그래밍
10. 다음 중 소멸자에 대하여 설명한 문장으로 옳은 것은? (4점)
정답을 선택하세요
1. 소멸자의 머리에는 void를 선언한다.
2. 소멸자에 형식 매개변수를 포함할 수 있다.
3. 소멸자를 다중정의할 수 없다.
4. 필요하다면 return 명령으로 값을 반환할 수 있다.

C++프로그래밍
11. (11~12) 다음 클래스 선언문에 대한 질문에 답하라. class ClassB { int a; static int b; public: …… int mf(int x); static int smf(); }; 이 클래스의 데이터 멤버에 대한 올바른 설명은? (2점)
정답을 선택하세요
1. ClassB의 객체는 각자 a라는 데이터 멤버를 갖는다.
2. ClassB의 객체는 각자 b라는 데이터 멤버를 갖는다.
3. ClassB의 데이터 멤버 a는 객체가 생성되기 전에 이미 존재한다.
4. ClassB의 데이터 멤버 b는 객체가 생성될 때 만들어진다.

C++프로그래밍
11. (10~11) 다음 클래스 선언문에 대한 질문에 답하라. class Copycat { char *name; public: Copycat(const char *n) { name = new char[strlen(n)+1]; strcpy(name, n); } (  ㄱ  ) { name = new char[strlen(cc.name)+1]; strcpy(name, cc.name); } (  ㄴ  ) …… }; (ㄴ)에 넣을 소멸자를 적절하게 작성한 것은? (3점)
정답을 선택하세요
1. Copycat() { delete [] name; }
2. ~Copycat() { delete name; }
3. ~Copycat() { delete [] name; }
4. void ~Copycat() { delete name; }

C++프로그래밍
11. (11~13) 다음 클래스에 대한 질문에 답하라. ClassA.h class ClassA { int a double b; static int c; public: int f1(); static int f2(); }; ClassA.cpp #include "ClassA.h" int ( ㄱ ) f1() { …… } int ( ㄱ ) f2() { //static ( ㄴ ) } int ( ㄱ ) c = 0; 클래스 ClassA의 멤버를 정의하기 위해 ㈀에 필요한 내용은 무엇인가? (3점)
정답을 선택하세요
1. this->
2. ClassA->
3. ClassA::
4. public:

C++프로그래밍
11. (10~11) 다음 클래스 선언문에 대한 질문에 답하라. class Copycat { char *name; public: Copycat(const char *n) { name = new char[strlen(n)+1]; strcpy(name, n); } (   ㄱ   ) { name = new char[strlen(cc.name)+1]; strcpy(name, cc.name); } (   ㄴ   ) …… }; (ㄴ)에 넣을 소멸자를 적절하게 작성한 것은? (3점)
정답을 선택하세요
1. Copycat() { delete [] name; }
2. ~Copycat() { delete name; }
3. ~Copycat() { delete [] name; }
4. void ~Copycat() { delete name; }

C++프로그래밍
11. (11~13) 다음 클래스에 대한 질문에 답하라. class ClassB { …… (   ㄱ   ); ClassB opeerator + (const ClassB& b) const; // (ㄴ) }; ClassB ( ㄷ ) operator + (const ClassB& b) const { (   ㄹ   ) } ClassB에 전위표기 ++ 연산자를 다중정의하려고 한다. 다음 중 (ㄱ)에 넣을 적절한 원형은? (2점)
정답을 선택하세요
1. ClassB operator ++ ();
2. ClassB operator ++ (ClassB& b);
3. ClassB operator ++ (int);
4. ClassB operator ++ (const ClassB& b) const;

C++프로그래밍
11. (10~12) 다음은 연필의 개수를 12자루 묶음의 타와 낱개로 표현하는 클래스이다. 생성자는 2개의 int값 인수를 받아 타와 낱개의 값을 초기화하는 것과 1개의 int값 인수를 받아 타와 낱개로 변환하여 초기화하는 것이 정의되어 있다고 가정한다. class Pencils { int dozens, np;  // 타, 낱개 public: ……  // 생성자(생략) (   ㄱ   ) { Pencils p(*this); if (++np == 12) ++dozens, np = 0; return p; } Pencils operator+(const Pencils& p) const; (   ㄴ   ) int getDozens() const { return dozens; } int getNP() const { return np; } }; Pencils 객체의 값을 낱개로 환산하여 int형으로 형변환할 수 있도록 형변환 연산자를 정의하고자 한다. ㈁에 넣을 적절한 내용은? (2점)
정답을 선택하세요
1. int Pencils() const { return dozens * 12 + np; }
2. int operator Pencils() { return *this; }
3. operator int() const { return dozens * 12 + np; }
4. int(const Pencils& p) { return p.dozens * 12 + p.np; }

C++프로그래밍
11. ClassA라는 클래스의 이동 생성자를 선언하기 위한 머리부를 올바르게 작성한 것은? (3점)
정답을 선택하세요
1. ClassA()
2. ClassA(const ClassA obj)
3. ClassA(ClassA& obj)
4. ClassA(ClassA&& obj)

C++프로그래밍
12. (11~12) 다음 클래스 선언문에 대한 질문에 답하라. class ClassB { int a; static int b; public: …… int mf(int x); static int smf(); }; 멤버함수 smf()에서 사용할 수 있는 명령은? (2점)
정답을 선택하세요
1. a = 0;
2. cout << mf(10);
3. cout << a;
4. return ++b;

C++프로그래밍
12. a가 ClassA의 객체이고 b가 ClassB의 객체일 때 다음 수식을 사용할 수 있게 하려면 어느 클래스에서 += 연산자를 다중정의 해야 하는가? (2점) a += b;
정답을 선택하세요
1. ClassA
2. ClassB
3. ClassA의 파생클래스
4. 다중정의 할 수 없음

C++프로그래밍
12. (11~13) 다음 클래스에 대한 질문에 답하라. ClassA.h class ClassA { int a double b; static int c; public: int f1(); static int f2(); }; ClassA.cpp #include "ClassA.h" int ( ㄱ ) f1() { …… } int ( ㄱ ) f2() { //static ( ㄴ ) } int ( ㄱ ) c = 0; 데이터 멤버 c에 대한 올바른 설명은? (3점)
정답을 선택하세요
1. 각각의 객체마다 각자의 c가 있다.
2. 객체가 만들어져야 c에 데이터를 저장할 수 있다.
3. c에 저장된 값을 변경할 수 없다.
4. 클래스에 속하는 모든 객체들이 공유하는 데이터 멤버이다.

C++프로그래밍
12. a가 ClassA의 객체이고 b가 ClassB의 객체일 때 다음 수식을 사용할 수 있게 하려면 어느 클래스에서 += 연산자를 다중정의 해야 하는가? (2점) a += b;
정답을 선택하세요
1. ClassA
2. ClassB
3. ClassA의 파생클래스
4. 다중정의 할 수 없음

C++프로그래밍
12. (11~13) 다음 클래스에 대한 질문에 답하라. class ClassB { …… (   ㄱ   ); ClassB opeerator + (const ClassB& b) const; // (ㄴ) }; ClassB ( ㄷ ) operator + (const ClassB& b) const { (   ㄹ   ) } (ㄴ)의 + 연산자의 다중정의를 클래스 선언문 외부에 작성하려고 할 때 (ㄷ)에 넣을 적절한 내용은? (3점)
정답을 선택하세요
1. b.
2. ClassB.
3. ClassB::
4. ClassB->

C++프로그래밍
12. (10~12) 다음은 연필의 개수를 12자루 묶음의 타와 낱개로 표현하는 클래스이다. 생성자는 2개의 int값 인수를 받아 타와 낱개의 값을 초기화하는 것과 1개의 int값 인수를 받아 타와 낱개로 변환하여 초기화하는 것이 정의되어 있다고 가정한다. class Pencils { int dozens, np;  // 타, 낱개 public: ……  // 생성자(생략) (   ㄱ   ) { Pencils p(*this); if (++np == 12) ++dozens, np = 0; return p; } Pencils operator+(const Pencils& p) const; (   ㄴ   ) int getDozens() const { return dozens; } int getNP() const { return np; } }; ㈀과 ㈁의 내용이 잘 정의되어 있을 때, 다음 중 사용할 수 없는 문장은? 단, p1, p2, p3는 Pencils 객체이다. (2점)
정답을 선택하세요
1. p1 = p2 + p3;
2. ++p1;
3. p2 = 15;
4. int a = p1;

C++프로그래밍
12. 다음 중 클래스의 static 멤버에 대한 설명으로 올바른 것은? (2점)
정답을 선택하세요
1. static 데이터 멤버는 객체마다 하나씩 존재한다.
2. static 데이터 멤버는 객체 생성과 관계없이 만들어진다.
3. static 멤버함수는 생성된 객체를 통해서만 호출할 수 있다.
4. static이 아닌 일반 멤버함수에서는 소속 클래스의 static 멤버를 사용할 수 없다.

C++프로그래밍
13. (13~15) 다음 클래스 선언문에 대한 질문에 답하라. <IntClass.h> class IntClass { int a; public: (  ㄱ  ) (  ㄴ  ); (  ㄷ  ) }; <IntClass.cpp> #include "IntClass.h" (  ㄹ  ) { --a; return *this; } int형 값을 대입하는 = 연산자를 다중정의하기 위해 (ㄱ)에 넣을 적절한 문장은? (2점)
정답을 선택하세요
1. void = (int x) { *this = x; }
2. IntClass operator = (int x) { a = x; return *this; }
3. operator = (int x) { a = x; }
4. int operator = (IntClass x, int y) { return x.a = y; }

C++프로그래밍
13. ClassC의 선언문 안에서 후위표기 ++ 연산자를 다중정의하고자 한다. 원형을 올바르게 작성한 것은? (2점)
정답을 선택하세요
1. ClassC operator ++ ();
2. ClassC operator ++ (int);
3. int operator ++ (const ClassC& objC);
4. void operator ++ (const ClassC& objC);

C++프로그래밍
13. (11~13) 다음 클래스에 대한 질문에 답하라. ClassA.h class ClassA { int a double b; static int c; public: int f1(); static int f2(); }; ClassA.cpp #include "ClassA.h" int ( ㄱ ) f1() { …… } int ( ㄱ ) f2() { //static ( ㄴ ) } int ( ㄱ ) c = 0; 다음 중 static 멤버함수의 몸체인 ㈁에 포함될 수 있는 문장은? (2점)
정답을 선택하세요
1. c = f1();
2. c = 0;
3. return a * a;
4. a = static_cast<int>(b);

C++프로그래밍
13. ClassC의 선언문 안에서 후위표기 ++ 연산자를 다중정의하고자 한다. 원형을 올바르게 작성한 것은? (2점)
정답을 선택하세요
1. ClassC operator ++ ();
2. ClassC operator ++ (int);
3. int operator ++ (const ClassC& objC);
4. void operator ++ (const ClassC& objC);

C++프로그래밍
13. (11~13) 다음 클래스에 대한 질문에 답하라. class ClassB { …… (   ㄱ   ); ClassB opeerator + (const ClassB& b) const; // (ㄴ) }; ClassB ( ㄷ ) operator + (const ClassB& b) const { (   ㄹ   ) } (ㄹ)의 내용을 작성하는 것과 관련한 설명으로 올바른 것은? (2점)
정답을 선택하세요
1. (ㄹ)에서 + 연산의 좌측 피연산자는 b이다.
2. (ㄹ)에서 + 연산의 우측 피연산자는 b이다.
3. (ㄹ)에서 *this는 b이다.
4. (ㄹ)에서 *this의 내용이 + 연산의 결과로 바뀐다.

C++프로그래밍
13. 다음 중 소멸자 선언에 대한 설명으로 올바른 것은? (3점)
정답을 선택하세요
1. return 명령으로 값을 반환할 수 있다.
2. 클래스와 같은 이름 앞에 '~'를 붙인 이름으로 선언한다.
3. 소멸자는 다중정의할 수 있다.
4. 매개변수를 통해 인수를 받을 수 있다.

C++프로그래밍
13. (13~14) 다음 클래스에 대한 질문에 답하라. class IClass { int a; public: IClass(int n = 0) { a = n; } IClass& operator ++ () { ++a; return *this; } (  ㄱ  ) const { // + 연산자 return IClass(a + i.a); } int getValue() const { return a; } ( ㄴ ) ostream& operator<<(ostream&, const IClass&); }; ostream& operator << (ostream& os, const IClass& i) { return os << i.a; // (ㄷ) } IClass 객체 사이의 덧셈을 하는 이항 연산자 +를 다중정의하기 위해 (ㄱ)에 넣을 적절한 문장은? (3점)
정답을 선택하세요
1. IClass operator+()
2. void operator+(const IClass& i)
3. IClass operator+(const IClass& i, const IClass& j)
4. IClass operator+(const IClass& i)

C++프로그래밍
14. (13~15) 다음 클래스 선언문에 대한 질문에 답하라. <IntClass.h> class IntClass { int a; public: (  ㄱ  ) (  ㄴ  ); (  ㄷ  ) }; <IntClass.cpp> #include "IntClass.h" (  ㄹ  ) { --a; return *this; } (ㄴ)에는 전위 표기법 -- 연산자의 원형이 선언되어 있다. 이 연산자를 정의하기 위해 (ㄹ)에 넣을 내용은? (2점)
정답을 선택하세요
1. IntClass operator -- (int)
2. int IntClass::operator -- ()
3. IntClass IntClass::operator -- ()
4. operator -- ()

C++프로그래밍
14. (14~15) static 멤버를 포함하는 다음 클래스 선언문에 대한 질문에 답하라. class SObj { int x, id; double y; static int nID; public: SObj(int a, double b):x(a), y(b) { id = ++ nID; } void display() const { cout << "ID:" << id << " x, y:" << x << ", " << y << endl; } static int f() { (  ㄱ  ) } }; (  ㄴ  ) 이 클래스 선언을 완성하기 위해 (ㄴ)에 필요한 내용은? (2점)
정답을 선택하세요
1. int SObj::nID = 0;
2. int nID = 1;
3. SObj = 0;
4. SObj::SObj = 0;

C++프로그래밍
14. (14~15) 다음은 연필의 개수를 12자루 묶음의 타와 낱개로 표현하는 클래스이다. 다음 질문에 답하라. class Pencils { int dozens, np;  // 타, 낱개 public: ……  // 생성자(생략) Pencils operator ++ (); Pencils operator ++ (int); Pencils operator + (const Pencils& p); Pencils operator * (int n); …… }; (  ㄱ  ) { if (++np >= 12) ++dozens, np = 0; return *this; } 다음 중 (ㄱ)에 넣을 적절한 구문은 무엇인가? (2점)
정답을 선택하세요
1. Pencils Pencils::operator ++ ()
2. Pencils Pencils::operator ++ (int)
3. Pencils Pencils::operator + (const Pencils& p)
4. Pencils Pencils::operator * (int n)

C++프로그래밍
14. (14~15) static 멤버를 포함하는 다음 클래스 선언문에 대한 질문에 답하라. class SObj { int x, id; double y; static int nID; public: SObj(int a, double b):x(a), y(b) { id = ++ nID; } void display() const { cout << "ID:" << id << " x, y:" << x << ", " << y << endl; } static int f() { (  ㄱ  ) } }; (  ㄴ  ) 이 클래스 선언을 완성하기 위해 (ㄴ)에 필요한 내용은? (2점)
정답을 선택하세요
1. int SObj::nID = 0;
2. int nID = 1;
3. SObj = 0;
4. SObj::SObj = 0;

C++프로그래밍
14. Class2의 private 멤버를 Class1의 멤버함수에서 액세스할 수 있도록 허용하려고 한다. (ㄱ)에 넣을 적절한 단어는? (3점) class Class2 { ( ㄱ ) class Class1; …… };
정답을 선택하세요
1. public
2. inline
3. private
4. friend

C++프로그래밍
14. 클래스의 static 멤버에 대한 설명으로 올바른 것은? (2점)
정답을 선택하세요
1. static 데이터 멤버는 각각의 객체마다 별도로 존재한다.
2. static 멤버함수는 객체가 생성되어야 호출할 수 있다.
3. static 멤버함수에서는 static이 아닌 데이터 멤버를 액세스할 수 없다.
4. static 멤버함수에서는 그 클래스의 멤버함수는 어느 것이든 호출할 수 있다.

C++프로그래밍
14. (13~14) 다음 클래스에 대한 질문에 답하라. class IClass { int a; public: IClass(int n = 0) { a = n; } IClass& operator ++ () { ++a; return *this; } (  ㄱ  ) const { // + 연산자 return IClass(a + i.a); } int getValue() const { return a; } ( ㄴ ) ostream& operator<<(ostream&, const IClass&); }; ostream& operator << (ostream& os, const IClass& i) { return os << i.a; // (ㄷ) } << 연산자가 IClass의 멤버는 아니지만 (ㄷ)과 같은 문장을 사용할 수 있게 하려면 (ㄴ)에 어떤 단어를 넣어야 하는가? (2점)
정답을 선택하세요
1. friend
2. explicit
3. inline
4. public

C++프로그래밍
15. (13~15) 다음 클래스 선언문에 대한 질문에 답하라. <IntClass.h> class IntClass { int a; public: (  ㄱ  ) (  ㄴ  ); (  ㄷ  ) }; <IntClass.cpp> #include "IntClass.h" (  ㄹ  ) { --a; return *this; } (ㄷ)에는 IntClass의 객체를 int형으로 형변환하는 연산자를 정의하려고 한다. 다음 중 적절한 것은? (2점)
정답을 선택하세요
1. operator int()const { return a; }
2. int operator IntClass()const { return *this; }
3. int operator int(IntClass x) { return x.a; }
4. operator int(IntClass x) { return x.a; }

C++프로그래밍
15. (14~15) static 멤버를 포함하는 다음 클래스 선언문에 대한 질문에 답하라. class SObj { int x, id; double y; static int nID; public: SObj(int a, double b):x(a), y(b) { id = ++ nID; } void display() const { cout << "ID:" << id << " x, y:" << x << ", " << y << endl; } static int f() { (  ㄱ  ) } }; (  ㄴ  ) 다음 중 (ㄱ)에서 사용할 경우 문법에 맞는 명령은? (2점)
정답을 선택하세요
1. cin >> x;
2. cout << y;
3. --nID;
4. id += x;

C++프로그래밍
15. (14~15) 다음은 연필의 개수를 12자루 묶음의 타와 낱개로 표현하는 클래스이다. 다음 질문에 답하라. class Pencils { int dozens, np;  // 타, 낱개 public: ……  // 생성자(생략) Pencils operator ++ (); Pencils operator ++ (int); Pencils operator + (const Pencils& p); Pencils operator * (int n); …… }; (  ㄱ  ) { if (++np >= 12) ++dozens, np = 0; return *this; } 위 내용만으로 볼 때 다음 중 Pencils 객체 p1과 p2를 대상으로 사용할 수 있는 연산에 해당되지 않는 것은? (2점)
정답을 선택하세요
1. p1++
2. ++p1
3. p1 + p2
4. 5 * p1

C++프로그래밍
15. (14~15) static 멤버를 포함하는 다음 클래스 선언문에 대한 질문에 답하라. class SObj { int x, id; double y; static int nID; public: SObj(int a, double b):x(a), y(b) { id = ++ nID; } void display() const { cout << "ID:" << id << " x, y:" << x << ", " << y << endl; } static int f() { (  ㄱ  ) } }; (  ㄴ  ) 다음 중 (ㄱ)에서 사용할 경우 문법에 맞는 명령은? (2점)
정답을 선택하세요
1. cin >> x;
2. cout << y;
3. --nID;
4. id += x;

C++프로그래밍
15. 클래스의 static 멤버에 대한 설명으로 올바른 것은? (2점)
정답을 선택하세요
1. static 멤버함수 안에서 소속 클래스의 static이 아닌 멤버함수를 호출할 수 있다.
2. static 멤버함수 안에서 소속 클래스의 static이 아닌 데이터 멤버의 값을 읽을 수 있다.
3. static 데이터 멤버는 각각의 객체마다 하나씩 존재한다.
4. 그 클래스의 객체가 만들어지지 않았어도 사용할 수 있다.

C++프로그래밍
15. 클래스 A가 클래스 B의 기초클래스이다. fA()는 A의 멤버함수이고, fB()는 B의 멤버함수일 때 다음 중 올바른 것은? (3점)
정답을 선택하세요
1. fA():B 객체의 private 멤버를 액세스할 수 있다.
2. fA():B 객체의 protected 멤버를 액세스할 수 있다.
3. fB():A에서 상속받은 protected 멤버를 직접 액세스할 수 있다.
4. fB():A에서 상속받은 private 멤버를 직접 액세스할 수 있다.

C++프로그래밍
15. 다음 중 클래스의 상속에 대한 설명으로 올바른 것은? (4점)
정답을 선택하세요
1. 기초 클래스는 파생 클래스들에 필요한 일반적 속성이나 메소드를 포함한다.
2. 파생 클래스의 멤버함수에서 기초 클래스의 private 멤버를 직접 사용할 수 있다.
3. 기초 클래스의 멤버함수에서 파생 클래스의 모든 멤버를 직접 사용할 수 있다.
4. 기초 클래스에서 상속받은 private 및 protected 멤버는 파생 클래스의 멤버함수에서 직접 사용할 수 없다.

C++프로그래밍
16. (16~18) 사람을 나타내는 Person 클래스와 이로부터 public으로 상속받는 파생 클래스인 운동선수 클래스 Athlete의 선언문에 대한 질문에 답하라. class Person { string name; public: Person(string n): name(n) { } string getName()const { return name; } void print()const { cout << name; } }; class (  ㄱ  ) { string team; public: (  ㄴ  ) string getTeam()const { return team; } void print()const { cout << team << "팀 "; Person::print(); } }; int main(){ Person *p = new Athlete("김철수", "승리"); (  a  ) } Person의 파생 클래스인 Athlete을 선언하기 위해 (ㄱ)에 넣을 내용은? (3점)
정답을 선택하세요
1. Athlete
2. Athlete:public Person
3. Person::Athlete
4. public Athlete

C++프로그래밍
16. (16~20) 클래스 상속과 관련한 다음 선언문에 대한 질문에 답하시오. (가)에는 기초 클래스의 id를 s1, att를 s2로 초기화하는 문장이, (나)에는 이와 더불어 x를 n으로 초기화하는 문장이 포함된다. (가상함수 사용에 주의하라.) class BClass { ( ㄱ ): string id; public: BClass(const string& s):id(s) {} virtual void action() const { cout << id << endl; } string getID() const { return id; } }; class DClass1:public BClass { string att; public: DClass1(const string& s1, const string& s2) (  가  ) string getAtt() const { return att; } void action() const { cout << getID() << " " << att << endl; } // (ㄴ) }; class DClass2:public DClass1 { int x; public: DClass2(const string& s1, const string& s2, int n) (  나  ) void action() const { cout << getID() << " " << getAtt() << " " << x << endl; } }; void f() { DClass1* pDC1 = new DClass2("ab", "cd", 10); BClass* pBC = pDC1; pBC->action(); // (다) pDC1->action(); // (라) …… } (ㄴ)에서 getID()를 호출하는 대신 id를 직접 액세스 할 수 있도록 하려면 (ㄱ)에 어떠한 문구를 넣어야 하는가? (2점)
정답을 선택하세요
1. private
2. friend
3. static
4. protected

C++프로그래밍
16. 다음 중 클래스에 대한 설명으로 올바른 것은? (4점)
정답을 선택하세요
1. 파생클래스는 기초클래스의 속성과 메소드를 이어받는다.
2. 가시성을 지시하지 않은 멤버는 public 멤버이다.
3. 기초클래스의 멤버함수에서 파생클래스의 public 멤버를 액세스할 수 있다.
4. 기초클래스의 protected 멤버는 파생클래스의 멤버함수에서 액세스할 수 없다.

C++프로그래밍
16. (16~20) 클래스 상속과 관련한 다음 선언문에 대한 질문에 답하시오. (가)에는 기초 클래스의 id를 s1, att를 s2로 초기화하는 문장이, (나)에는 이와 더불어 x를 n으로 초기화하는 문장이 포함된다. (가상함수 사용에 주의하라.) class BClass { (  ㄱ  ): string id; public: BClass(const string& s):id(s) {} virtual void action() const { cout << id << endl; } string getID() const { return id; } }; class DClass1:public BClass { string att; public: DClass1(const string& s1, const string& s2) (   가   ) string getAtt() const { return att; } void action() const { cout << getID() << " " << att << endl; } // ㈁ }; class DClass2:public DClass1 { int x; public: DClass2(const string& s1, const string& s2, int n) (   나   ) void action() const { cout << getID() << " " << getAtt() << " " << x << endl; } }; void f() { DClass1* pDC1 = new DClass2("ab", "cd", 10); BClass* pBC = pDC1; pBC->action(); // (다) pDC1->action(); // (라) …… } (ㄴ)에서 getID()를 호출하는 대신 id를 직접 액세스 할 수 있도록 하려면 (ㄱ)에 어떠한 문구를 넣어야 하는가? (2점)
정답을 선택하세요
1. private
2. friend
3. static
4. protected

C++프로그래밍
16. (16~19) 클래스 Person과 Person의 파생 클래스인 Athlete에 대한 질문에 답하라. class Person { (  ㄱ  ) string name; public: Person(const string& n):name(n) {} string getName() const { return name; } ( ㄴ ) void print() const { cout << name; } }; int main() { Person *pP1 = new Person("홍길동"); Athlete *pA = new Athlete("박철수", "승리구단"); Person *pP2 = pA; pP1->print();   cout << " "; pA->print();   cout << " "; pP2->print();   cout << endl; delete pP1;    delete pP2; return 0; } Person의 public 멤버가 Athlete의 public 멤버로 상속되도록 하기 위해 (ㄷ)에 넣을 내용은? (4점)
정답을 선택하세요
1. public Person
2. private Person
3. public Athlete
4. static Person

C++프로그래밍
16. 다음의 대상을 클래스 계층구조로 표현할 때 나머지 클래스의 기초클래스가 될 수 있는 것은? (4점)
정답을 선택하세요
1. 비행기
2. 전투기
3. 수송기
4. 여객기

C++프로그래밍
16. (16~19) 다음 클래스 및 함수에 대한 질문에 답하라. class A { int a; public: A(int x) { a = x; cout << "A 생성 "; } virtual ~A() { cout << "A 소멸 "; } virtual int f(int x) const { return x + a; } void g(int x) { a += x; } }; // A의 파생 클래스 선언 class B:( ㄱ ) { int b; public: B(int x, int y) ( ㄴ ) { cout << "B 생성 "; } ~B() { cout << "B 소멸 "; } // A의 f를 재정의 int f(int x) const { return x + b; } }; int h() { A* p = new B(10, 20); int val = p->f(100); delete p; return val; } main 함수에서 B의 객체 bObj를 만들었을 때 bObj.g(10)과 같이 A의 멤버함수 g를 호출하려고 한다. (ㄱ)에 넣을 내용은? (3점)
정답을 선택하세요
1. public A
2. private A
3. protected A
4. friend A

C++프로그래밍
17. (16~18) 사람을 나타내는 Person 클래스와 이로부터 public으로 상속받는 파생 클래스인 운동선수 클래스 Athlete의 선언문에 대한 질문에 답하라. class Person { string name; public: Person(string n): name(n) { } string getName()const { return name; } void print()const { cout << name; } }; class (  ㄱ  ) { string team; public: (  ㄴ  ) string getTeam()const { return team; } void print()const { cout << team << "팀 "; Person::print(); } }; int main(){ Person *p = new Athlete("김철수", "승리"); (  a  ) } (ㄴ)에 넣을 Athlete의 생성자를 올바르게 작성한 것은? (3점)
정답을 선택하세요
1. void Athlete(string t) { team = t; }
2. Athlete(string n, string t) { name = n; team = t; }
3. Athlete(string t):team(t) { }
4. Athlete(string n, string t):Person(n), team(t) { }

C++프로그래밍
17. (16~20) 클래스 상속과 관련한 다음 선언문에 대한 질문에 답하시오. (가)에는 기초 클래스의 id를 s1, att를 s2로 초기화하는 문장이, (나)에는 이와 더불어 x를 n으로 초기화하는 문장이 포함된다. (가상함수 사용에 주의하라.) class BClass { ( ㄱ ): string id; public: BClass(const string& s):id(s) {} virtual void action() const { cout << id << endl; } string getID() const { return id; } }; class DClass1:public BClass { string att; public: DClass1(const string& s1, const string& s2) (  가  ) string getAtt() const { return att; } void action() const { cout << getID() << " " << att << endl; } // (ㄴ) }; class DClass2:public DClass1 { int x; public: DClass2(const string& s1, const string& s2, int n) (  나  ) void action() const { cout << getID() << " " << getAtt() << " " << x << endl; } }; void f() { DClass1* pDC1 = new DClass2("ab", "cd", 10); BClass* pBC = pDC1; pBC->action(); // (다) pDC1->action(); // (라) …… } DClass1의 생성자를 완성하기 위해 (가)에 넣을 문장은? (2점)
정답을 선택하세요
1. { id = s1; att = s2; }
2. :BClass(s1), att(s2) {}
3. { getID() = s1; att = s2; }
4. :id(s1), att(s2) {}

C++프로그래밍
17. 파생클래스 객체가 만들어지고 제거될 때 파생클래스와 기초클래스 생성자 및 소멸자의 동작 순서를 올바르게 설명한 것은? (3점)
정답을 선택하세요
1. 생성자와 소멸자 모두 기초클래스의 것이 먼저 동작한다.
2. 생성자와 소멸자 모두 파생클래스의 것이 먼저 동작한다.
3. 파생클래스의 소멸자 동작 후 기초클래스의 소멸자 동작
4. 파생클래스의 생성자 동작 후 기초클래스의 생성자 동작

C++프로그래밍
17. (16~20) 클래스 상속과 관련한 다음 선언문에 대한 질문에 답하시오. (가)에는 기초 클래스의 id를 s1, att를 s2로 초기화하는 문장이, (나)에는 이와 더불어 x를 n으로 초기화하는 문장이 포함된다. (가상함수 사용에 주의하라.) class BClass { (  ㄱ  ): string id; public: BClass(const string& s):id(s) {} virtual void action() const { cout << id << endl; } string getID() const { return id; } }; class DClass1:public BClass { string att; public: DClass1(const string& s1, const string& s2) (   가   ) string getAtt() const { return att; } void action() const { cout << getID() << " " << att << endl; } // ㈁ }; class DClass2:public DClass1 { int x; public: DClass2(const string& s1, const string& s2, int n) (   나   ) void action() const { cout << getID() << " " << getAtt() << " " << x << endl; } }; void f() { DClass1* pDC1 = new DClass2("ab", "cd", 10); BClass* pBC = pDC1; pBC->action(); // (다) pDC1->action(); // (라) …… } DClass1의 생성자를 완성하기 위해 (가)에 넣을 문장은? (2점)
정답을 선택하세요
1. { id = s1; att = s2; }
2. :BClass(s1), att(s2) {}
3. { getID() = s1; att = s2; }
4. :id(s1), att(s2) {}

C++프로그래밍
17. (16~19) 클래스 Person과 Person의 파생 클래스인 Athlete에 대한 질문에 답하라. class Person { (  ㄱ  ) string name; public: Person(const string& n):name(n) {} string getName() const { return name; } ( ㄴ ) void print() const { cout << name; } }; int main() { Person *pP1 = new Person("홍길동"); Athlete *pA = new Athlete("박철수", "승리구단"); Person *pP2 = pA; pP1->print();   cout << " "; pA->print();   cout << " "; pP2->print();   cout << endl; delete pP1;    delete pP2; return 0; } Person의 멤버 name을 (ㄹ)의 문장처럼 Athlete의 멤버함수에서 사용할 수 있고, main함수에서는 name을 직접 사용할 수 없도록 하려면 (ㄱ)에 어떠한 내용이 필요한가? (3점)
정답을 선택하세요
1. private:
2. protected:
3. public:
4. default:

C++프로그래밍
17. (17~19) Person 클래스와 이의 파생클래스인 Student 클래스가 다음과 같을 때, 이에 대한 질문에 답하라. class Person { string name; public: Person(string n) { name = n; } (  ㄱ  ) void who() const { cout << name ; } string getName() const { return name; } }; class Student (  ㄴ  ) { string school; public: Student(string s, string n) ㈂ void who() const { cout << school << "학교 "<< getName(); } }; void f(const Person& p) { p.who(); cout << " "; } void g() { Student s("대한중", "김한국"); cout << s.getName() << endl; f(s); } 함수 g()의 20행과 같이 Student 객체로 Person의 멤버함수 getName()을 호출할 수 있게 하려면 ㈁에 어떠한 내용이 필요한가? (3점)
정답을 선택하세요
1. :Person
2. :public Person
3. :protected Person
4. :private Person

C++프로그래밍
17. (16~19) 다음 클래스 및 함수에 대한 질문에 답하라. class A { int a; public: A(int x) { a = x; cout << "A 생성 "; } virtual ~A() { cout << "A 소멸 "; } virtual int f(int x) const { return x + a; } void g(int x) { a += x; } }; // A의 파생 클래스 선언 class B:( ㄱ ) { int b; public: B(int x, int y) ( ㄴ ) { cout << "B 생성 "; } ~B() { cout << "B 소멸 "; } // A의 f를 재정의 int f(int x) const { return x + b; } }; int h() { A* p = new B(10, 20); int val = p->f(100); delete p; return val; } B의 생성자에서 x는 클래스 A의 a, y는 B의 b에 초기화되게 하기 위해 (ㄴ)에 넣을 내용은? (3점)
정답을 선택하세요
1. :a(x), b(y)
2. { A::A(x); b = y }
3. { a = x, b = y }
4. :A(x), b(y)

C++프로그래밍
18. (16~18) 사람을 나타내는 Person 클래스와 이로부터 public으로 상속받는 파생 클래스인 운동선수 클래스 Athlete의 선언문에 대한 질문에 답하라. class Person { string name; public: Person(string n): name(n) { } string getName()const { return name; } void print()const { cout << name; } }; class (  ㄱ  ) { string team; public: (  ㄴ  ) string getTeam()const { return team; } void print()const { cout << team << "팀 "; Person::print(); } }; int main(){ Person *p = new Athlete("김철수", "승리"); (  a  ) } main 함수의 (a)에서 사용할 수 있는 문장은? (2점)
정답을 선택하세요
1. cout << p->name;
2. p->print();
3. cout << p->team;
4. cout << p->getTeam();

C++프로그래밍
18. (16~20) 클래스 상속과 관련한 다음 선언문에 대한 질문에 답하시오. (가)에는 기초 클래스의 id를 s1, att를 s2로 초기화하는 문장이, (나)에는 이와 더불어 x를 n으로 초기화하는 문장이 포함된다. (가상함수 사용에 주의하라.) class BClass { ( ㄱ ): string id; public: BClass(const string& s):id(s) {} virtual void action() const { cout << id << endl; } string getID() const { return id; } }; class DClass1:public BClass { string att; public: DClass1(const string& s1, const string& s2) (  가  ) string getAtt() const { return att; } void action() const { cout << getID() << " " << att << endl; } // (ㄴ) }; class DClass2:public DClass1 { int x; public: DClass2(const string& s1, const string& s2, int n) (  나  ) void action() const { cout << getID() << " " << getAtt() << " " << x << endl; } }; void f() { DClass1* pDC1 = new DClass2("ab", "cd", 10); BClass* pBC = pDC1; pBC->action(); // (다) pDC1->action(); // (라) …… } (다)의 문장에 의해 출력되는 결과는? (3점)
정답을 선택하세요
1. ab
2. ab cd
3. ab cd 10
4. 출력하지 않음

C++프로그래밍
18. (18~20) Person 클래스와 Person의 파생클래스인 Student에 대한 다음 질문에 답하라. class Person { string name; public: Person(const string &n):name(n) {} // 생성자 string getName() const { return name; } ( ㄱ ) void print() const { cout << name; } }; class Student:( ㄴ ) Person { string school; public: Student(const string &n, const string &s) (  ㄷ  )  // 생성자 string getSchool() const { return school; } void print() const { cout << school << "에 다니는 " << getName(); } }; Person 클래스의 public 멤버가 Student의 public 멤버로 상속되도록 하기 위해 (ㄴ)에 넣을 내용은? (3점)
정답을 선택하세요
1. friend
2. protected
3. public
4. 공란

C++프로그래밍
18. (16~20) 클래스 상속과 관련한 다음 선언문에 대한 질문에 답하시오. (가)에는 기초 클래스의 id를 s1, att를 s2로 초기화하는 문장이, (나)에는 이와 더불어 x를 n으로 초기화하는 문장이 포함된다. (가상함수 사용에 주의하라.) class BClass { (  ㄱ  ): string id; public: BClass(const string& s):id(s) {} virtual void action() const { cout << id << endl; } string getID() const { return id; } }; class DClass1:public BClass { string att; public: DClass1(const string& s1, const string& s2) (   가   ) string getAtt() const { return att; } void action() const { cout << getID() << " " << att << endl; } // ㈁ }; class DClass2:public DClass1 { int x; public: DClass2(const string& s1, const string& s2, int n) (   나   ) void action() const { cout << getID() << " " << getAtt() << " " << x << endl; } }; void f() { DClass1* pDC1 = new DClass2("ab", "cd", 10); BClass* pBC = pDC1; pBC->action(); // (다) pDC1->action(); // (라) …… } (다)의 문장에 의해 출력되는 결과는? (3점)
정답을 선택하세요
1. ab
2. ab cd
3. ab cd 10
4. 출력하지 않음

C++프로그래밍
18. (16~19) 클래스 Person과 Person의 파생 클래스인 Athlete에 대한 질문에 답하라. class Person { (  ㄱ  ) string name; public: Person(const string& n):name(n) {} string getName() const { return name; } ( ㄴ ) void print() const { cout << name; } }; int main() { Person *pP1 = new Person("홍길동"); Athlete *pA = new Athlete("박철수", "승리구단"); Person *pP2 = pA; pP1->print();   cout << " "; pA->print();   cout << " "; pP2->print();   cout << endl; delete pP1;    delete pP2; return 0; } (ㄴ)이 공란일 경우 main의 출력 결과는? (3점)
정답을 선택하세요
1. 홍길동  승리구단 소속 박철수  승리구단 소속 박철수
2. 홍길동  박철수  박철수
3. 홍길동  승리구단 소속 박철수  박철수
4. 홍길동  박철수  승리구단 소속 박철수

C++프로그래밍
18. (17~19) Person 클래스와 이의 파생클래스인 Student 클래스가 다음과 같을 때, 이에 대한 질문에 답하라. class Person { string name; public: Person(string n) { name = n; } (  ㄱ  ) void who() const { cout << name ; } string getName() const { return name; } }; class Student (  ㄴ  ) { string school; public: Student(string s, string n) ㈂ void who() const { cout << school << "학교 "<< getName(); } }; void f(const Person& p) { p.who(); cout << " "; } void g() { Student s("대한중", "김한국"); cout << s.getName() << endl; f(s); } 11행의 생성자에서 n이 name에, s가 school에 저장되게 하려면 ㈂에 어떠한 내용을 넣으면 되는가? (2점)
정답을 선택하세요
1. :Person(n), school(s) {}
2. :name(n), school(s)
3. { name=n; school=s; }
4. :school(s) { name=n; }

C++프로그래밍
18. (16~19) 다음 클래스 및 함수에 대한 질문에 답하라. class A { int a; public: A(int x) { a = x; cout << "A 생성 "; } virtual ~A() { cout << "A 소멸 "; } virtual int f(int x) const { return x + a; } void g(int x) { a += x; } }; // A의 파생 클래스 선언 class B:( ㄱ ) { int b; public: B(int x, int y) ( ㄴ ) { cout << "B 생성 "; } ~B() { cout << "B 소멸 "; } // A의 f를 재정의 int f(int x) const { return x + b; } }; int h() { A* p = new B(10, 20); int val = p->f(100); delete p; return val; } 문제 52와 같이 생성자가 정의되었을 때, 함수 h()를 호출하면 반환되는 값은? (2점)
정답을 선택하세요
1. 100
2. 110
3. 120
4. 130

C++프로그래밍
19. 다음 중 클래스 계층구조를 설계할 경우 나머지 클래스의 기초 클래스가 될 수 있는 것은? (3점)
정답을 선택하세요
1. 버스
2. 트럭
3. 자동차
4. 승용차

C++프로그래밍
19. (16~20) 클래스 상속과 관련한 다음 선언문에 대한 질문에 답하시오. (가)에는 기초 클래스의 id를 s1, att를 s2로 초기화하는 문장이, (나)에는 이와 더불어 x를 n으로 초기화하는 문장이 포함된다. (가상함수 사용에 주의하라.) class BClass { ( ㄱ ): string id; public: BClass(const string& s):id(s) {} virtual void action() const { cout << id << endl; } string getID() const { return id; } }; class DClass1:public BClass { string att; public: DClass1(const string& s1, const string& s2) (  가  ) string getAtt() const { return att; } void action() const { cout << getID() << " " << att << endl; } // (ㄴ) }; class DClass2:public DClass1 { int x; public: DClass2(const string& s1, const string& s2, int n) (  나  ) void action() const { cout << getID() << " " << getAtt() << " " << x << endl; } }; void f() { DClass1* pDC1 = new DClass2("ab", "cd", 10); BClass* pBC = pDC1; pBC->action(); // (다) pDC1->action(); // (라) …… } (라)의 문장에 의해 출력되는 결과는? (3점)
정답을 선택하세요
1. ab
2. ab cd
3. ab cd 10
4. 출력하지 않음

C++프로그래밍
19. (18~20) Person 클래스와 Person의 파생클래스인 Student에 대한 다음 질문에 답하라. class Person { string name; public: Person(const string &n):name(n) {} // 생성자 string getName() const { return name; } ( ㄱ ) void print() const { cout << name; } }; class Student:( ㄴ ) Person { string school; public: Student(const string &n, const string &s) (  ㄷ  )  // 생성자 string getSchool() const { return school; } void print() const { cout << school << "에 다니는 " << getName(); } }; Student 클래스의 생성자를 선언하기 위해 (ㄷ)에 넣을 적절한 구문은? (3점)
정답을 선택하세요
1. { name = n; school = s; }
2. { Person::name = n; school = s; }
3. :name(n), school(s) {}
4. :Person(n), school(s) {}

C++프로그래밍
19. (16~20) 클래스 상속과 관련한 다음 선언문에 대한 질문에 답하시오. (가)에는 기초 클래스의 id를 s1, att를 s2로 초기화하는 문장이, (나)에는 이와 더불어 x를 n으로 초기화하는 문장이 포함된다. (가상함수 사용에 주의하라.) class BClass { (  ㄱ  ): string id; public: BClass(const string& s):id(s) {} virtual void action() const { cout << id << endl; } string getID() const { return id; } }; class DClass1:public BClass { string att; public: DClass1(const string& s1, const string& s2) (   가   ) string getAtt() const { return att; } void action() const { cout << getID() << " " << att << endl; } // ㈁ }; class DClass2:public DClass1 { int x; public: DClass2(const string& s1, const string& s2, int n) (   나   ) void action() const { cout << getID() << " " << getAtt() << " " << x << endl; } }; void f() { DClass1* pDC1 = new DClass2("ab", "cd", 10); BClass* pBC = pDC1; pBC->action(); // (다) pDC1->action(); // (라) …… } (라)의 문장에 의해 출력되는 결과는? (3점)
정답을 선택하세요
1. ab
2. ab cd
3. ab cd 10
4. 출력하지 않음

C++프로그래밍
19. (16~19) 클래스 Person과 Person의 파생 클래스인 Athlete에 대한 질문에 답하라. class Person { (  ㄱ  ) string name; public: Person(const string& n):name(n) {} string getName() const { return name; } ( ㄴ ) void print() const { cout << name; } }; int main() { Person *pP1 = new Person("홍길동"); Athlete *pA = new Athlete("박철수", "승리구단"); Person *pP2 = pA; pP1->print();   cout << " "; pA->print();   cout << " "; pP2->print();   cout << endl; delete pP1;    delete pP2; return 0; } (ㄴ)에 virtual 이라는 단어를 넣었을 때 main의 출력 결과는? (3점)
정답을 선택하세요
1. 홍길동  승리구단 소속 박철수  승리구단 소속 박철수
2. 홍길동  박철수  박철수
3. 홍길동  승리구단 소속 박철수  박철수
4. 홍길동  박철수  승리구단 소속 박철수

C++프로그래밍
19. (17~19) Person 클래스와 이의 파생클래스인 Student 클래스가 다음과 같을 때, 이에 대한 질문에 답하라. class Person { string name; public: Person(string n) { name = n; } (  ㄱ  ) void who() const { cout << name ; } string getName() const { return name; } }; class Student (  ㄴ  ) { string school; public: Student(string s, string n) ㈂ void who() const { cout << school << "학교 "<< getName(); } }; void f(const Person& p) { p.who(); cout << " "; } void g() { Student s("대한중", "김한국"); cout << s.getName() << endl; f(s); } 21행을 실행한 결과 '대한중학교 김한국'을 출력하려면 ㈀에 어떠한 내용이 필요한가? (4점)
정답을 선택하세요
1. abstract
2. auto
3. inline
4. virtual

C++프로그래밍
19. (16~19) 다음 클래스 및 함수에 대한 질문에 답하라. class A { int a; public: A(int x) { a = x; cout << "A 생성 "; } virtual ~A() { cout << "A 소멸 "; } virtual int f(int x) const { return x + a; } void g(int x) { a += x; } }; // A의 파생 클래스 선언 class B:( ㄱ ) { int b; public: B(int x, int y) ( ㄴ ) { cout << "B 생성 "; } ~B() { cout << "B 소멸 "; } // A의 f를 재정의 int f(int x) const { return x + b; } }; int h() { A* p = new B(10, 20); int val = p->f(100); delete p; return val; } 함수 h()를 호출하였을 때 출력 결과는 무엇인가? (2점)
정답을 선택하세요
1. B 생성 B 소멸
2. A 생성 B 생성 A 소멸 B 소멸
3. A 생성 B 생성 B 소멸 A 소멸
4. B 생성 A 생성 B 소멸 A 소멸

C++프로그래밍
20. 기초 클래스와 파생 클래스의 소멸자에 대하여 올바르게 설명한 것은? (4점)
정답을 선택하세요
1. 파생 클래스 객체가 소멸될 때는 파생 클래스 소멸자만 동작한다.
2. 파생 클래스 객체가 소멸될 때 기초 클래스 소멸자가 먼저 동작한다.
3. 기초 클래스 소멸자의 가시성은 private로 선언해야 한다.
4. 기초 클래스의 소멸자를 가상함수로 선언하는 것이 좋다.

C++프로그래밍
20. (16~20) 클래스 상속과 관련한 다음 선언문에 대한 질문에 답하시오. (가)에는 기초 클래스의 id를 s1, att를 s2로 초기화하는 문장이, (나)에는 이와 더불어 x를 n으로 초기화하는 문장이 포함된다. (가상함수 사용에 주의하라.) class BClass { ( ㄱ ): string id; public: BClass(const string& s):id(s) {} virtual void action() const { cout << id << endl; } string getID() const { return id; } }; class DClass1:public BClass { string att; public: DClass1(const string& s1, const string& s2) (  가  ) string getAtt() const { return att; } void action() const { cout << getID() << " " << att << endl; } // (ㄴ) }; class DClass2:public DClass1 { int x; public: DClass2(const string& s1, const string& s2, int n) (  나  ) void action() const { cout << getID() << " " << getAtt() << " " << x << endl; } }; void f() { DClass1* pDC1 = new DClass2("ab", "cd", 10); BClass* pBC = pDC1; pBC->action(); // (다) pDC1->action(); // (라) …… } pB가 BClass의 포인터이고, pD2가 DClass2의 포인터일 때 pB가 가리키는 객체를 pD2가 가리키게 하려고 한다. 다음 중 만일 pB가 가리키고 있는 객체가 DClass2의 객체라면 pD2에 포인터가 복사되고, 그렇지 않으면 pD2에 NULL이 저장되도록 하는 문장은? (3점)
정답을 선택하세요
1. pD2 = pB;
2. pD2 = (DClass2*)pB;
3. pD2 = static_cast<DClass2*>(pB);
4. pD2 = dynamic_cast<DClass2*>(pB);

C++프로그래밍
20. (18~20) Person 클래스와 Person의 파생클래스인 Student에 대한 다음 질문에 답하라. class Person { string name; public: Person(const string &n):name(n) {} // 생성자 string getName() const { return name; } ( ㄱ ) void print() const { cout << name; } }; class Student:( ㄴ ) Person { string school; public: Student(const string &n, const string &s) (  ㄷ  )  // 생성자 string getSchool() const { return school; } void print() const { cout << school << "에 다니는 " << getName(); } }; 다음 문장이 student의 print를 호출하도록 하려면 ㈀에 어떤 단어를 넣어야 하는가? (3점) Person *p = new Student("김철수", "방송대"); p->print();
정답을 선택하세요
1. friend
2. virtual
3. public
4. 공란

C++프로그래밍
20. (16~20) 클래스 상속과 관련한 다음 선언문에 대한 질문에 답하시오. (가)에는 기초 클래스의 id를 s1, att를 s2로 초기화하는 문장이, (나)에는 이와 더불어 x를 n으로 초기화하는 문장이 포함된다. (가상함수 사용에 주의하라.) class BClass { (  ㄱ  ): string id; public: BClass(const string& s):id(s) {} virtual void action() const { cout << id << endl; } string getID() const { return id; } }; class DClass1:public BClass { string att; public: DClass1(const string& s1, const string& s2) (   가   ) string getAtt() const { return att; } void action() const { cout << getID() << " " << att << endl; } // ㈁ }; class DClass2:public DClass1 { int x; public: DClass2(const string& s1, const string& s2, int n) (   나   ) void action() const { cout << getID() << " " << getAtt() << " " << x << endl; } }; void f() { DClass1* pDC1 = new DClass2("ab", "cd", 10); BClass* pBC = pDC1; pBC->action(); // (다) pDC1->action(); // (라) …… } pB가 BClass의 포인터이고, pD2가 DClass2의 포인터일 때 pB가 가리키는 객체를 pD2가 가리키게 하려고 한다. 다음 중 만일 pB가 가리키고 있는 객체가 DClass2의 객체라면 pD2에 포인터가 복사되고, 그렇지 않으면 pD2에 NULL이 저장되도록 하는 문장은? (3점)
정답을 선택하세요
1. pD2 = pB;
2. pD2 = (DClass2*)pB;
3. pD2 = static_cast<DClass2*>(pB);
4. pD2 = dynamic_cast<DClass2*>(pB);

C++프로그래밍
20. 다음 클래스에 대한 설명으로 올바른 것은? (4점) class absClass { …… virtual int funcA(int a) = 0; };
정답을 선택하세요
1. funcA의 형식매개변수 a의 초깃값은 0이다.
2. absClass는 추상클래스로서, 객체를 직접 만들 수 없다.
3. absClass가 기초클래스인 파생클래스를 선언할 수 없다.
4. absClass의 파생클래스에서 funcA를 재정의하면 absClass는 상세클래스가 되어 객체를 만들 수 있게 된다.

C++프로그래밍
20. 다음 중 순수 가상함수를 포함하는 클래스에 대한 설명으로 올바른 것은? (4점)
정답을 선택하세요
1. 그 클래스의 객체를 직접 만들 수 있다.
2. 그 클래스는 추상클래스이다.
3. 그 클래스의 파생클래스를 선언할 수 없다.
4. 그 클래스는 다른 클래스의 파생클래스가 될 수 없다.

C++프로그래밍
20. 다음과 같은 멤버가 포함되어 있는 클래스에 대한 설명으로 올바른 것은? (4점) class ClassAbs { …… virtual int f() = 0; };
정답을 선택하세요
1. 이 클래스는 상세 클래스(concrete class)이다.
2. 이 클래스의 파생 클래스를 선언할 수 없다.
3. 이 클래스 객체의 함수 f()를 호출하면 0을 반환한다.
4. 이 클래스로부터 상속을 받는 파생 클래스는 함수 f()를 재정의해야만 상세 클래스가 될 수 있다.

C++프로그래밍
21. 추상 클래스와 상세 클래스에 대한 다음 설명 중 옳은 것을 모두 나열한 것은? (4점) (ㄱ) 추상 클래스는 객체를 직접 정의할 수 없다. (ㄴ) 추상 클래스는 순수 가상함수를 포함하고 있다. (ㄷ) 상세 클래스는 객체를 정의할 수 있다. (ㄹ) 기초 클래스에서 상속 받은 순수 가상함수를 모두 재정의하지 않았더라도 파생 클래스에서 순수 가상함수를 선언하지 않았다면 그 클래스는 상세 클래스이다.
정답을 선택하세요
1. (ㄱ), (ㄹ)
2. (ㄴ), (ㄷ)
3. (ㄱ), (ㄴ), (ㄷ)
4. (ㄱ), (ㄴ), (ㄷ), (ㄹ)

C++프로그래밍
21. 다음 중 추상 클래스에 대한 설명으로 적절한 것은? (4점)
정답을 선택하세요
1. 추상 클래스로 직접 객체를 정의할 수 없다.
2. 기초 클래스가 1개인 클래스이다.
3. 가상함수를 포함하지 않는 클래스이다.
4. 추상 클래스는 파생 클래스를 가질 수 없다.

C++프로그래밍
21. 추상클래스와 상세클래스에 대한 올바른 설명은? (4점)
정답을 선택하세요
1. 추상클래스로 직접 객체를 정의할 수 있다.
2. 상세클래스는 순수가상함수를 포함하지 않아야 한다.
3. 상세클래스는 객체를 정의할 수 없다.
4. 상세클래스는 그 클래스의 파생클래스들이 반드시 가지고 있어야 할 행위를 누락하지 않도록 하는 역할을 한다.

C++프로그래밍
21. 다음 중 추상 클래스에 대한 설명으로 적절한 것은? (4점)
정답을 선택하세요
1. 추상 클래스로 직접 객체를 정의할 수 없다.
2. 기초 클래스가 1개인 클래스이다.
3. 가상함수를 포함하지 않는 클래스이다.
4. 추상 클래스는 파생 클래스를 가질 수 없다.

C++프로그래밍
21. 다음과 같이 선언된 클래스 템플릿을 이용하여 int형 값을 10개 저장하는 컨테이너 a를 정의하는 문장은? (2점) template <class T, int size> class Array [ T buf[size]; …… };
정답을 선택하세요
1. Array<int> a;
2. Array<10> int a;
3. Array<int, 10> a;
4. Array a<10>;

C++프로그래밍
21. 생성자와 소멸자에 대한 설명이 올바른 것은? (3점)
정답을 선택하세요
1. 추상클래스는 생성자를 포함하지 않는다.
2. 기초클래스는 소멸자가 필요 없다.
3. 다른 클래스의 기초클래스가 되는 클래스의 소멸자는 가상함수로 선언하는 것이 올바른 방법이다.
4. 기초클래스의 소멸자가 동작한 후 파생클래스 소멸자가 동작한다.

C++프로그래밍
21. (21~22) 매개변수 T를 통해 지정된 자료형의 값을 sz개 저장하는 배열을 표현하는 클래스 템플릿에 대한 질문에 답하라. ( ㄱ ) < ( ㄴ ) T> class Array { T* buf; int sz; public: Array(int s):sz{ s }, buf{ new T[s] } {} ~Array() { delete[] buf; } …… }; (ㄱ)과 (ㄴ)에 넣을 적절한 단어는? (3점)
정답을 선택하세요
1. ㈀ class, ㈁ class
2. ㈀ template, ㈁ typename
3. ㈀ template, ㈁ int
4. ㈀ explicit, ㈁ template

C++프로그래밍
22. STL의 구성 요소 중 반복자(iterator)의 역할은 무엇인가? (3점)
정답을 선택하세요
1. 포인터
2. 데이터 저장 공간
3. 데이터 처리
4. 저장 공간 생성

C++프로그래밍
22. 다음 중 표준 템플릿 라이브러리(STL)의 순차 컨테이너에 해당되는 것은? (2점)
정답을 선택하세요
1. set
2. map
3. multimap
4. list

C++프로그래밍
22. 다음은 템플릿 매개변수에 지정된 자료형과 개수에 따라 데이터를 저장하는 클래스 템플릿이다. double형 값을 50개 저장하는 컨테이너 a를 정의하는 올바른 문장은? (2점) template <class T, int size> class ArrT { T arr[size]; …… };
정답을 선택하세요
1. ArrT<double, 50> a;
2. ArrT<double> a[50];
3. ArrT a(double)[50];
4. ArrT a[50];

C++프로그래밍
22. 다음 중 표준 템플릿 라이브러리(STL)의 순차 컨테이너에 해당되는 것은? (2점)
정답을 선택하세요
1. set
2. map
3. multimap
4. list

C++프로그래밍
22. 다음 STL 컨테이너 중 배열과 같이 활용할 수 있으며, 필요에 따라 그 크기를 확장할 수 있는 것은? (3점)
정답을 선택하세요
1. list
2. map
3. multimap
4. vector

C++프로그래밍
22. 다음은 저장할 값의 자료형과 개수를 템플릿 매개변수로 갖는 클래스 템플릿이다. float형 값을 20개 저장할 수 있는 컨테이너 fArr을 선언하는 올바른 문장은? (2점) template <class T, int size> class Arr { T buf[size]; …… };
정답을 선택하세요
1. double Arr[20] fArr;
2. template <float, 20> fArr;
3. Arr<float> fArr(20);
4. Arr<float, 20> fArr;

C++프로그래밍
22. (21~22) 매개변수 T를 통해 지정된 자료형의 값을 sz개 저장하는 배열을 표현하는 클래스 템플릿에 대한 질문에 답하라. ( ㄱ ) < ( ㄴ ) T> class Array { T* buf; int sz; public: Array(int s):sz{ s }, buf{ new T[s] } {} ~Array() { delete[] buf; } …… }; double형 값을 100개 저장하는 Array 객체 a를 선언하는 문장으로 올바른 것은? (3점)
정답을 선택하세요
1. Array a(double 100);
2. Array<double> a(100);
3. Array a(100);
4. Array a<double, 100>

C++프로그래밍
23. 다음 중 STL에서 제공하는 컨테이너 중 vector에 대한 올바른 설명은 무엇인가? (3점)
정답을 선택하세요
1. 연상 컨테이너에 해당된다.
2. 저장 공간의 크기가 고정되어 있다.
3. 논리적 크기와 물리적 크기가 일치하지 않을 수 있다.
4. 동일한 값을 여러 개 저장할 수 없다.

C++프로그래밍
23. 다음 중 배열의 개념을 구현한 것으로, 필요에 따라 크기를 확장할 수 있는 STL의 컨테이너는 무엇인가? (3점)
정답을 선택하세요
1. multiset
2. vector
3. list
4. set

C++프로그래밍
23. (23~24) 다음 프로그램에 대한 질문에 답하라. vector<int> a(10); vector<int>::iterator it; int i=0; for (  (ㄱ)  ) *it = i++; a에 대한 설명으로 올바른 것은? (3점)
정답을 선택하세요
1. 연상 컨테이너에 해당된다.
2. 원하는 위치에 직접 접근할 수 없다.
3. 키를 이용한 검색 기능을 제공한다.
4. 배열과 유사하나 실행 중에 필요하다면 a의 용량을 확장할 수 있다.

C++프로그래밍
23. 다음 중 배열의 개념을 구현한 것으로, 필요에 따라 크기를 확장할 수 있는 STL의 컨테이너는 무엇인가? (3점)
정답을 선택하세요
1. multiset
2. vector
3. list
4. set

C++프로그래밍
23. STL에서 반복자(iterator)의 용도는 무엇인가? (3점)
정답을 선택하세요
1. 포인터
2. 데이터의 임시 저장
3. 처리결과의 반환
4. 컨테이너의 크기 지정

C++프로그래밍
23. STL의 컨테이너 중 연상 컨테이너에 해당되는 것은? (2점)
정답을 선택하세요
1. multimap
2. vector
3. list
4. deque

C++프로그래밍
23. 다음 중 STL의 순차 컨테이너를 모아 놓은 것은? (2점)
정답을 선택하세요
1. vector, list, deque
2. vector, list, map
3. list, set, map
4. map, unordered_map

C++프로그래밍
24. (24~25) 다음 예외처리 구문에 대한 질문에 답하라. try { (  ㄱ  ) } catch (int a) { (  ㄴ  ) } catch (const char* str) { (  ㄷ  ) } catch (...) { (  ㄹ  ) } (ㄱ)은 어떠한 내용을 작성하는 영역인가? (4점)
정답을 선택하세요
1. 예외가 발생할 가능성이 있는 문장
2. 항상 정상적으로 동작할 수 있는 문장
3. 예외가 발생하였을 때 이에 대응한 예외처리 문장
4. 예외 처리 후 실행할 문장

C++프로그래밍
24. (24~25) 다음 함수에 대한 질문에 답하라. double f(double x) { if (x == 0) throw "div by zero"; return 1.0/x; } void g() { ( ㄱ ) { double a = f(0.0); cout << a << endl; } catch (const char* str) { cout << str << endl; } catch (...) { cout << ".." << endl; } cout << "done" << endl; } 예외 처리를 위해 (ㄱ)에 넣을 단어는? (4점)
정답을 선택하세요
1. inline
2. try
3. switch
4. enum

C++프로그래밍
24. (23~24) 다음 프로그램에 대한 질문에 답하라. vector<int> a(10); vector<int>::iterator it; int i=0; for (  (ㄱ)  ) *it = i++; a의 선두에서 시작하여 차례로 0부터 9까지의 값이 저장되게 하려고 한다. (ㄱ)에 넣을 적절한 내용은? (2점)
정답을 선택하세요
1. (i = 0 ; i < 10 ; i++)
2. (it = a[0] ; it < a[10] ; it++)
3. (it = a.begin() ; it < a.end() ; it++)
4. ( ; i < 10 ; )

C++프로그래밍
24. (24~25) 다음 함수에 대한 질문에 답하라. double f(double x) { if (x == 0) throw "div by zero"; return 1.0/x; } void g() { ( ㄱ ) { double a = f(0.0); cout << a << endl; } catch (const char* str) { cout << str << endl; } catch (...) { cout << ".." << endl; } cout << "done" << endl; } 예외 처리를 위해 (ㄱ)에 넣을 단어는? (4점)
정답을 선택하세요
1. inline
2. try
3. switch
4. enum

C++프로그래밍
24. (24~25) 다음 클래스에 대한 질문에 답하라. double g(double x) { if (x <= 0) throw 0; return sqrt(x); } void f(double a) { ( ㄱ ) { cout << g(a) << endl; } catch (  ㄴ  ) { cout << "예외 발생" << endl; } } 예외 처리를 위해 (ㄱ)에 넣을 적절한 단어는 무엇인가? (3점)
정답을 선택하세요
1. switch
2. try
3. case
4. do

C++프로그래밍
24. STL에서 컨테이너에 저장된 원소를 액세스하기 위한 포인터의 역할을 하는 것은 무엇인가? (3점)
정답을 선택하세요
1. 알고리즘
2. vector
3. 반복자(iterator)
4. multiset

C++프로그래밍
24. 다음 함수에 대한 설명으로 올바른 것은? (4점) void f() { try { (  ㄱ  ) } catch (int e) { (  ㄴ  ) } catch (...) { (  ㄷ  ) } (  ㄹ  ) }
정답을 선택하세요
1. ㈀에는 예외가 발생할 가능성이 있는 문장이 포함된다.
2. ㈀에서 예외가 발생하지 않으면 ㈁을 실행한다.
3. 어떤 예외가 발생하든 ㈂의 문장을 실행한다.
4. 예외가 발생하면 ㈃의 문장은 실행하지 않는다.

C++프로그래밍
25. (24~25) 다음 예외처리 구문에 대한 질문에 답하라. try { (  ㄱ  ) } catch (int a) { (  ㄴ  ) } catch (const char* str) { (  ㄷ  ) } catch (...) { (  ㄹ  ) } (ㄱ)에서 실행 중 throw 10; 이라는 명령을 실행했을 때 프로그램은 어떻게 동작하는가? (3점)
정답을 선택하세요
1. (ㄱ) 영역을 처음부터 다시 실행
2. (ㄴ) 영역을 실행
3. (ㄷ) 영역을 실행
4. (ㄹ) 영역을 실행

C++프로그래밍
25. (24~25) 다음 함수에 대한 질문에 답하라. double f(double x) { if (x == 0) throw "div by zero"; return 1.0/x; } void g() { ( ㄱ ) { double a = f(0.0); cout << a << endl; } catch (const char* str) { cout << str << endl; } catch (...) { cout << ".." << endl; } cout << "done" << endl; } 함수 g()를 실행하였을 때 출력되는 내용은? (3점)
정답을 선택하세요
1. 0 div by zero done
2. 0 done
3. div by zero done
4. div by zero

C++프로그래밍
25. 다음 중 프로그램 실행 중 예외 발생하였음을 알리기 위해 사용하는 명령은? (3점)
정답을 선택하세요
1. friend
2. throw
3. try
4. switch

C++프로그래밍
25. (24~25) 다음 함수에 대한 질문에 답하라. double f(double x) { if (x == 0) throw "div by zero"; return 1.0/x; } void g() { ( ㄱ ) { double a = f(0.0); cout << a << endl; } catch (const char* str) { cout << str << endl; } catch (...) { cout << ".." << endl; } cout << "done" << endl; } 함수 g()를 실행하였을 때 출력되는 내용은? (3점)
정답을 선택하세요
1. 0 div by zero done
2. 0 done
3. div by zero done
4. div by zero

C++프로그래밍
25. (24~25) 다음 클래스에 대한 질문에 답하라. double g(double x) { if (x <= 0) throw 0; return sqrt(x); } void f(double a) { ( ㄱ ) { cout << g(a) << endl; } catch (  ㄴ  ) { cout << "예외 발생" << endl; } } 함수 g()에서 예외가 발생할 경우 "예외 발생"이라고 출력하기 위해 (ㄴ)에 넣을 내용은? (2점)
정답을 선택하세요
1. void
2. char*
3. int []
4. int

C++프로그래밍
25. 예외처리 구문에 대한 설명으로 올바른 것은? (3점)
정답을 선택하세요
1. 예외가 발생할 가능성이 있는 부분은 catch 블록에 넣는다.
2. 예외 발생을 알리기 위해서는 throw 명령을 사용한다.
3. exception 클래스는 가상함수인 try를 가지고 있다.
4. exception 클래스는 상속을 할 수 없다.

C++프로그래밍
25. 다음 함수에서는 예외 발생시 메모리가 소실되는 문제가 있는데, 이의 해결 방법으로 적절한 것은? (3점) void g(int n) { int* pt = new int[n]; …… if (pt[i] < pt[j]) throw "exception"; …… delete[] pt;" }
정답을 선택하세요
1. 함수 g()를 noexcept 함수로 선언한다.
2. 예외 객체로 "exception" 대신 0을 throw한다.
3. 일반 포인터 및 new, delete 연산자를 직접 사용하는 대신 vector와 같은 컨테이너를 사용한다.
4. 함수 g()를 inline 함수로 선언한다.
진행 상황
답안 완료율
0%
미답안 답안완료