본문 바로가기

프로그래밍 언어/C, C++

[Hackerrank] 32. Multi Level Inheritance

32. Multi Level Inheritance

[ 난이도: Easy | 분야: Inheritance ]

이번 챌린지에서는 Inheritance-Introduction의 연장선에 있는 챌린지다.

이 문제를 풀기 전에 반드시 이전 챌린지를 풀고 오는 것을 추천한다.

이전 문제에서, 상속에 대해 배웠고 base 클래스의 멤버 함수들을 derived class에서 사용하는지에 대해 배웠다.

이번 챌린지에서는, 다중 상속에 대해 배울 것이다.

클래스 A라는 base 클래스가 있고 클래스 A를 derive한 클래스 B와 클래스 B를 derive한 클래스 C가 있다고 가정하자.

우리는 클래스 C의 객체를 만든다면, 클래스 A와 클래스 B의 멤버를 사용할 수 있다.

그렇기에 이 메커니즘을 다중 상속이라고 한다.(B는 A를 상속하고 C는 B를 상속한다.)

출력이 아래와 같게 나오도록 Isosceles를 상속하는 Equilateral 클래스를 생성하라.

Sample Output

I am an equilateral triangle
I am an isosceles triangle
I am a triangle

 

문제

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

class Triangle{
	public:
		void triangle(){
			cout<<"I am a triangle\n";
		}
};

class Isosceles : public Triangle{
  	public:
  		void isosceles(){
    		cout<<"I am an isosceles triangle\n";
  		}
};

//Write your code here.

int main(){
  
    Equilateral eqr;
    eqr.equilateral();
    eqr.isosceles();
    eqr.triangle();
    return 0;
}
더보기

정답

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

class Triangle{
	public:
		void triangle(){
			cout<<"I am a triangle\n";
		}
};

class Isosceles : public Triangle{
  	public:
  		void isosceles(){
    		cout<<"I am an isosceles triangle\n";
  		}
};

//Write your code here.
class Equilateral : public Isosceles {
    public:
        void equilateral() {
            cout <<"I am an equilateral triangle\n";
        }
};

int main(){
  
    Equilateral eqr;
    eqr.equilateral();
    eqr.isosceles();
    eqr.triangle();
    return 0;
}

 

 

 

 

 

©️Hackerrank. All Rights Reserved.