[C++] 상속/오버라이딩/기능 확장

우니·2022년 10월 31일
0

오버라이딩과 오버로딩의 차이

기반 클래스에서 정의된 기능을 파생 클래스에서 재정의하는 것을 오버라이딩이라고 한다.
오버로딩이랑 이름이 비슷해서 헷갈릴 수 있지만 전혀 다른 내용이다.

오버로딩은 '일을 너무 많이 준다'라는 뜻으로, 같은 이름의 함수를 인자의 형태나 개수만 다르게 해서 여러개 만드는 것이고, 오버라이딩은 기반 클래스에 정의된 기능을 파생 클래스에서 재정의 하는 것을 말한다.

그렇기에 오버라이딩을 하려면 기반 클래스에 정의된 함수와 파생 클래스에서 재정의된 함수의 이름, 리턴형, 인자의 개수나 타입등이 완전히 같아야 한다.

기능의 확장

상속받은 기능을 그대로 활용하되, 살짝 더 추가하고싶을 수 있다. 이럴때도 오버라이디을 하는데, 어떠한 방식으로 하는지 살펴보자.

Child 클래스는 Parent 클래스를 상속받는다.
그리고, Parent 클래스의 멤버함수인 Appearance를 오버라이딩 하고 싶다.

class Child : public Parent
{
public:
	Child(); //생성자
    ~Child(); //소멸쟈
    
    void Apperance(void);
}

함수를 재정의할 때 다음과 같이 기반 클래스에 정의된 함수를 호출할 수 있다. 이렇게 하면 기반 클래스의 기능은 그대로 활용하면서 새로운 기능을 앞뒤로 덧붙일 수 있다.

void Child::Appearance(void)
{
	Parent::Appearance();
    cout << "추가 기능" << endl;
}

0개의 댓글