다음 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;
}- ①Derived의 생성자가 정의되어 있지 않음에도 불구하고 main 함수에서 Derived의 객체를 생성하였기 때문
- ②Derived의 setab 함수가 보호멤버(protected member)임에도 불구하고 main 함수에서 사용하였기 때문
- ③a와 b는 Derived에서 전용멤버(private member)임에도 불구하고 showabc 함수에서 사용하였기 때문
- ④클래스 상속 시 보호(protected)로 상속할 수 없음에도 불구하고 Derived를 보호로 상속하였기 때문
선지를 골라 바로 채점해 보세요.
정답 ②
출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)