[7급 국가직 프로그래밍언어론 2013년 15번]

다음 C++ 프로그램은 컴파일 시 오류가 발생한다. 오류의 원인에 대한 설명으로 옳은 것은?
#include <iostream>

using namespace std;

class Base {
protected :
    int a, b;
public :
    void setab(int n, int m) { a = n; b = m; }
};

class Derived : protected Base {
    int c;
public :
    void setc(int n) { c = n; }
    void showabc() {
        cout << a <<' '<< b <<' '<< c << endl;
    }
};

int main() {
    Derived ob;
    ob.setab(1, 2);
    ob.setc(3);
    ob.showabc();
    return 0;
}
프로그래밍언어론
  1. ①Derived의 생성자가 정의되어 있지 않음에도 불구하고 main 함수에서 Derived의 객체를 생성하였기 때문
  2. ②Derived의 setab 함수가 보호멤버(protected member)임에도 불구하고 main 함수에서 사용하였기 때문
  3. ③a와 b는 Derived에서 전용멤버(private member)임에도 불구하고 showabc 함수에서 사용하였기 때문
  4. ④클래스 상속 시 보호(protected)로 상속할 수 없음에도 불구하고 Derived를 보호로 상속하였기 때문

선지를 골라 바로 채점해 보세요.

정답 ②

출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)

신고가 접수됐습니다. 감사합니다.

오류 신고