[Hackerrank] C++ - 32 Multi Level Inheritance

후유카와·2024년 11월 22일

Hackerrank

목록 보기
30/59

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.

profile
안녕하세요! 저는 전자공학을 전공하며 하드웨어와 소프트웨어 모두를 깊이 있게 공부하고 있는 후유카와입니다. Verilog HDL, C/C++, Java, Python 등 다양한 프로그래밍 언어를 다루고 있으며, 최근에는 알고리즘에 대한 학습에 집중하고 있습니다. 기술적인 내용을 공유하고, 함께 성장할 수 있는 공간이 되기를 바랍니다. 잘못된 내용이나 피드백은 언제나 환영합니다! 함께 소통하며 더 나은 지식을 쌓아가요. 감사합니다!

0개의 댓글