17.2 Basic inheritance in C++

주홍영·2022년 3월 20일
0

Learncpp.com

목록 보기
163/199

https://www.learncpp.com/cpp-tutorial/basic-inheritance-in-c/

Inheritance는 c++에서 클래스 사이에 위치하는 개념이다.
Inheritance(is-a) 관계에서 상속해주는 클래스는
parent class, base class, superclass라고 불리우고
상속 받는 클래스는 child class, derived(파생된) class, subclass라고 불리운다
(derive는 파생하다, 유래하다)

예시를 통해서 빠르게 살펴보자

#include <iostream>
#include <string>

class Person
{
public:
    std::string m_name{};
    int m_age{};

    Person(const std::string& name = "", int age = 0)
        : m_name{name}, m_age{age}
    {
    }

    const std::string& getName() const { return m_name; }
    int getAge() const { return m_age; }

};

// BaseballPlayer publicly inheriting Person
class BaseballPlayer : public Person
{
public:
    double m_battingAverage{};
    int m_homeRuns{};

    BaseballPlayer(double battingAverage = 0.0, int homeRuns = 0)
       : m_battingAverage{battingAverage}, m_homeRuns{homeRuns}
    {
    }
};

int main()
{
    // Create a new BaseballPlayer object
    BaseballPlayer joe{};
    // Assign it a name (we can do this directly because m_name is public)
    joe.m_name = "Joe";
    // Print out the name
    std::cout << joe.getName() << '\n'; // use the getName() function we've acquired from the Person base class

    return 0;
}

BaseballPlayer클래스가 Person class를 public 상속 받고 있음으로
joe.m_name과 joe.getName 등을 통해 member variable과 function에 접근할 수 있다

Why is this kind of inheritance useful?

base class로부터 inherit을 하면 우리는 base class의 정보를 derived class를 설계하는데 재설정할 필요가 없게 된다. 우리는 자동적으로 멤버 변수와 함수를 base클래스로부터 상속받게 되고 거기에 우리가 원하는 정보와 함수를 덧붙이면 된다

단순히 일을 줄여줄 뿐만 아니라 base 클래스를 업데이트 하게되면 이를 상속받은 모든 클래스에 반영이 되는 이점도 있다

profile
청룡동거주민

0개의 댓글