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

다음 C++ 프로그램의 실행 결과로 옳은 것은?
#include <iostream>
using std::cout;

class A {
public:
	virtual void p() { cout << "A.p "; }
	void q() { cout << "A.q "; }
	virtual void r() { 
		p(); 
		q(); 
	}
};
 
class B : public A {
public:
	void p() { cout << "B.p "; }
};
 
class C : public B {
public:
	void q() { cout << "C.q "; }
	void r() { 
		q(); 
		p();
	}
};
 
void main() {
	A *ap = new B;
	ap->r();
	ap = new C;
	ap->r();
}
프로그래밍언어론
  1. ①A.p A.q B.p C.q
  2. ②A.p A.q C.q B.p
  3. ③B.p A.q B.p C.q
  4. ④B.p A.q C.q B.p

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

정답 ④

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

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

오류 신고