클래스 B 객체를 생성하면서 전달한 인자의 값을 상속을 이용하여 화면에… | [7급 국가직 소프트웨어공학] 23년 1회차 기출문제 상세 페이지
1[7급 국가직 소프트웨어공학] 23년 1회차
클래스 B 객체를 생성하면서 전달한 인자의 값을 상속을 이용하여 화면에 출력하기 위한 C++ 코드 중 오류가 있는 코드의 라인 번호만을 모두 고르면? (단, 밑줄 친 라인 번호의 코드 이외에는 오류가 없다)
| 라인 번호 | C++ 코드 |
|---|---|
| 1 | #include<iostream> |
| 2 | using namespace std; |
| 3 | |
| 4 | class A { |
| 5 | private: |
| 6 | int size; |
| 7 | public: |
| 8 | A(int size) { size = size; }; //오류 확인 |
| 9 | virtual void print() { cout << size; }; |
| 10 | }; |
| 11 | |
| 12 | class B : public A { |
| 13 | public: |
| 14 | B(int size) : A(size) { }; |
| 15 | void print() { cout << size; }; //오류 확인 |
| 16 | }; |
| 17 | |
| 18 | int main() { |
| 19 | A *b = new B(10); |
| 20 | b.print(); //오류 확인 |
| 21 | return 0; |
| 22 | } |
1
15
2
8, 15
3
8, 20
4
8, 15, 20
해설
밑줄 친 8행, 15행, 20행 모두 오류가 있다.
8행의 size = size는 매개변수를 자기 자신에 대입할 뿐 멤버 size는 초기화되지 않으므로 this->size = size처럼 써야 한다.
- 15행: size는 A의 private 멤버라 파생 클래스 B에서 접근할 수 없어 컴파일 오류가 난다.
- 20행: b는 포인터이므로 b.print()가 아니라 b->print()로 호출해야 한다.
오류나 개정된 내용이 보이면 알려주세요