다음 C++ 프로그램의 실행 결과로 옳은 것은?#include <… | [9급 지방직 컴퓨터일반] 21년 1회차 기출문제 상세 페이지
1[9급 지방직 컴퓨터일반] 21년 1회차
다음 C++ 프로그램의 실행 결과로 옳은 것은?#include <iostream>
using namespace std;
class Student {
public:
Student():Student(0) {};
Student(int id):_id(id) {
if (_id > 0) _cnt++;
};
static void print() { cout << _cnt;};
void printID() { cout << ++_id;};
private:
int _id;
static int _cnt;
};
int Student::_cnt = 0;
int main() {
Student A(2);
Student B;
Student C(4);
Student D(-5);
Student E;
Student::print();
E.printID();
return 0;
}
1
21
2
22
3
30
4
31
해설
프로그램은 _cnt 값 2를 먼저 출력하고 이어서 1을 출력하므로 실행 결과는 21이다.
정적 멤버 _cnt는 모든 객체가 공유하며, 생성자에서 _id가 0보다 클 때만 1 증가한다. 기본 생성자는 위임 생성자로 Student(0)을 호출하므로 _id는 0이다.
- A(2)와 C(4)만 조건을 만족해 _cnt는 2가 되고, B·E(_id=0)와 D(_id=−5)는 _cnt를 바꾸지 않는다.
- Student::print()가 2를 출력한 뒤, E.printID()는 E의 _id 0을 전위 증가시켜 1을 출력한다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.